【发布时间】:2015-06-16 02:08:57
【问题描述】:
我有一个大型数据框,其中的列是数字字符串,例如“1、2、3、4”。我希望添加一个新列,即这些数字的平均值。我已经设置了以下示例:
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
谁能解释这个错误以及为什么我不能使用变量索引?如果我用一个常量替换 index 就可以了,它似乎不喜欢我在那里使用一个变量。
非常感谢!
【问题讨论】:
标签: r recursion dplyr strsplit