将split_rows应用于数据帧列表R

时间:2018-08-14 14:33:26

标签: r dataframe

我想使用tiyverse separate_rows函数来分隔同一行中大于1个数值的行。我可以在数据框上执行此操作,但不能在数据框列表上进行操作,我也不知道为什么。列表中的所有数据框都具有相同的列名,只是行数不同。

a<-c("a","b","c")
b<-c(1,"1,2",3)
df1<-data.frame(a,b)
df2<-df1
df2[2,2]="1"

我可以在df1上使用separate_rows

separate_rows(df1,b)
> separate_rows(df1,b)
  a b
1 a 1
2 b 1
3 b 2
4 c 3

但不在列表中:

mylist<-list(df1,df2)
lapply(mylist, function(x) separate_rows(b))

因为出现错误

> lapply(mylist, function(x) separate_rows(b))
Error in UseMethod("separate_rows_") : 
  no applicable method for 'separate_rows_' applied to an object of class "character"
Called from: separate_rows_(data, cols = cols, sep = sep)

我在做什么错了?

编辑: 我知道我做错了(没有传递所有参数)

1 个答案:

答案 0 :(得分:1)

您还需要通过df

lapply(mylist, function(x) separate_rows(x,b))

这是一个简单的非优雅解决方案,但它可以正常工作

lapply(mylist, function(x) {y <- separate_rows(x,b)
                            y['b'] <- as.numeric(y[['b']])
                            y}) %>% str()