У меня есть большой кадр данных с столбцами, которые являются символьной строкой чисел, таких как «1, 2, 3, 4». Я хочу добавить новый столбец, который является средним из этих чисел. Я создал следующий пример:R: разделите строку на числовую и верните среднее значение в качестве нового столбца в фрейме данных
set.seed(2015)
library(dplyr)
a<-c("1, 2, 3, 4", "2, 4, 6, 8", "3, 6, 9, 12")
df<-data.frame(a)
df$a <- as.character(df$a)
Теперь я могу использовать strsplit разбить строку и возвращает среднее значение для данной строки, где [[1]] определяет первую строку.
mean(as.numeric(strsplit((df$a), split=", ")[[1]]))
[1] 2.5
Проблема в том, когда я пытаюсь сделать это в кадре данных и ссылаться на номер строки, я получаю сообщение об ошибке.
> df2<- df %>%
+ mutate(index = row_number(),
+ avg = mean(as.numeric(strsplit((df$a), split=", ")
[[index]])))
Error in strsplit((df$a), split = ", ")[[1:3]] :
recursive indexing failed at level 2
Может ли кто-нибудь объяснить эту ошибку и почему я не могу индексировать ее с помощью переменной? Если я заменю индекс константой, это работает, мне кажется, что я не использую переменную там.
Большое спасибо!