![](/img/trans.png)
[英]Is there an R function to identify and modify column names across dataframes in the same List?
[英]R - rapply function across one column of multiple dataframes in a list
我有多个数据框的列表。 每个数据框包含相同的列。 我想对列表中所有数据框的特定列进行更改。 但是,我似乎无法弄清楚如何调用单个列。
df1 <- data.frame("col1"=c("foo-1", "foo-1", "bar-7"), "col2" = c("blu-e", "gre-en", "blue"))
df2 <- data.frame("col1"=c("bar", "bar", "foo-2", "foo"), "col2" = c("green", "orang-e", "yell-ow", "pink"))
dflist <- list(df1, df2)
>df1
col1 col2
foo-1 blu-e
foo-1 gre-en
bar-7 blue
>df2
col1 col2
bar green
bar orang-e
foo-2 yell-ow
foo pink
我想,以取代-
在这两个df1
和df2
,但只有在col2
。
例:
>df1
col1 col2
foo-1 blue
foo-1 green
bar-7 blue
>df2
col1 col2
bar green
bar orange
foo-2 yellow
foo pink
我试过这个代码(这是我从两个SO问题(相关调整了1 , 2 ):
newdf <- rapply(dflist, function(x) gsub(pattern="\\-", "", x, `[[`, "col2"), how="list")
但这gsubs
在col1
和col2
。 例:
>df1
col1 col2
foo1 blue
foo1 green
bar7 blue
>df2
col1 col2
bar green
bar orange
foo2 yellow
foo pink
如何仅引用一列? 我对apply
家庭仍然是新手,因此如果需要其他功能,请告诉我。
编辑: @alistaire在评论中提供了答案
Rapply很复杂,但是您实际上并不需要它。 只是lapply会做:lapply(dflist,function(x){x $ col2 <-gsub('-','',x $ col2); x})– alistaire 2月24日4:35
使用lapply代替:
lapply(dflist, transform, col2 = gsub("-", "", col2))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.