我有 20 个数据框,在每个数据框中我想以相同的方式格式化同一列。当然,我可以创建 dfs 的 list
,然后使用 lapply
。相反,我的目标是修改 dfs,以便最终我不必将它们作为列表元素而是作为 dfs 来访问。这是一个例子:
df1 <- data.frame(col1 = rnorm(5), col2 = rnorm(5))
df2 <- data.frame(col1 = rnorm(5), col2 = rnorm(5))
现在,假设我想为 df1
和 df2
中 col1
的每个值加 1。当然,我可以做到
df_list <- lapply(list(df1, df2), function(df) {
df$col1 <- df$col1 + 1
return(df)
})
但是现在df1
返回原始的df而不是修改后的df。怎么做?
最佳答案
基于OP代码的一个选项是在命名list
元素后使用list2env
names(df_list) <- paste0("df", 1:2)
list2env(df_list, envir = .GlobalEnv)
如果我们需要避免创建列表
(建议有一个列表
数据集,而不是在全局环境中创建单独的对象),那么使用使用
for
循环分配
for(obj in paste0('df', 1:2)) {
assign(obj, `[<-`(get(obj), 'col1', value = get(obj)[['col1']] +1))
}
关于r - 如何修改多个数据框而不创建它们的列表然后使用 lapply?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46097161/