我有一个包含多个数据帧的列表。每个数据框包含相同的列。我想对列表中所有数据框的特定列进行更改。 但是,我似乎无法弄清楚如何调用单个列。
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
家族的新手,所以如果需要一个不同的功能让我也知道。
修改 ANSWER在@alistaire的评论中提供
拉普利很复杂,但你真的不需要它;只是lapply会 do:lapply(dflist,function(x){x $ col2&lt; - gsub(&#39; - &#39;,&#39;&#39;,x $ col2); x}) - alistaire 2月24日4:35
答案 0 :(得分:1)
改为使用lapply:
lapply(dflist, transform, col2 = gsub("-", "", col2))