繁体   English   中英

R-在列表中多个数据框的一列上应用函数

[英]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

我想,以取代-在这两个df1df2 ,但只有在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问题(相关调整了12 ):

newdf <- rapply(dflist, function(x) gsub(pattern="\\-", "", x, `[[`, "col2"), how="list")

但这gsubscol1col2 例:

>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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM