R沿着数据帧列表进行变异 df

R沿着数据帧列表进行变异 df,r,dplyr,R,Dplyr,您似乎在正确的轨道上,但是您替换原始列表中的元素的方式有点错误。虽然有多种方法可以实现这一点,但以下是您开始使用的领域: for循环 这将创建一个新列表 地图 这也将创建一个新列表 您还可以从purr包中查看 我希望其中一个能起到作用。这里有一个选项,可以从tidyverse Map(function(x) { mutate(x, new_col_one=first/(second * 2), new_col_two=first/(second

您似乎在正确的轨道上,但是您替换原始列表中的元素的方式有点错误。虽然有多种方法可以实现这一点,但以下是您开始使用的领域:

for循环 这将创建一个新列表

地图 这也将创建一个新列表

您还可以从
purr
包中查看


我希望其中一个能起到作用。

这里有一个选项,可以从
tidyverse

Map(function(x) {
    mutate(x,
           new_col_one=first/(second * 2),
           new_col_two=first/(second * 3))
}, ldf)

尝试:
ldf2如果它们的格式相同,只需使用
ldf%>%bind_行(.id='id')
将它们转换为正常的数据帧。
for
在这里是不好的样式,
Map
通常用于多变量函数,虽然它作为单变量很好。也许你已经回答了这个问题……如果没有,我可以发布一个问题。有没有一种方法可以在不指定列名的情况下将mutate映射到所有列?例如,
NewColumn1
NewColumn2
我们可以动态命名它们,并为
first/100
second/100
选择列,而不是命名它们。可以使用一些函数
x/100
吗?x是该lsdf中的所有列吗?@user5249203。你可以查一下。您需要将
mutate_if
更改为
mutate_at(vars(…),list(New=~./100))
@user5249203。在这里,您可以使用
mutate\u all
map(ldf,~.x%>%mutate\u all(list(New=~./100))
for( i in seq_along(ldf)){
 ldf[[i]] <- mutate( ldf[[i]], NewColumn1= ldf[[i]][1]/(ldf[[i]][2] *2),
                               NewColumn2= ldf[[i]][1]/(ldf[[i]][2] * 3))
}
for (df_name in names(ldf)) {
    ldf[[df_name]] <- mutate(ldf[[df_name]],
           new_col_one=first/(second * 2),
           new_col_two=first/(second * 3))
}
lapply(ldf, function(x) {
    mutate(x,
           new_col_one=first/(second * 2),
           new_col_two=first/(second * 3))
})
Map(function(x) {
    mutate(x,
           new_col_one=first/(second * 2),
           new_col_two=first/(second * 3))
}, ldf)
library(tidyverse)
ldf %>%
   map(~mutate(., NewColumn1 = first/(second*2), NewColumn2 = first/(second*3)))