繁体   English   中英

将新列分配给 R 中第二个数据框的数据框列表

[英]Assign new columns to a list of dataframes from a second dataframe in R

我有一个数据帧列表df_list和第二个数据帧df_new 我想第一列加adf_new到第一数据帧mtcars1列表df_list ,第二列bdf_new进入第二个数据帧mtcars2列表df_list ,等等。

预期结果:在df_listmtcars1将有一个来自df_new的新列amtcars2将有一个来自df_new的新列bmtcars3将有一个来自df_new的新列cmtcars4将有一个来自df_new的新列c

在函数或循环中执行此操作的最佳方法是什么?

library(tidyverse)
df_list <- list(mtcars, mtcars, mtcars, mtcars)
names(df_list) <- c("mtcars1", "mtcars2", "mtcars3", "mtcars4")
df_new <- mtcars[1:4] %>% rename(a = mpg, b = cyl, c = disp, d = hp)

这对你有用吗?

for(i in 1:4){
  df_list[[i]] = cbind(df_list[[i]], df_new[,i])}

使用地图

Map(cbind, df_list, df_new)

如果我们需要保留名称,则编写自定义函数:

myCbind <- function(x, y){
  d <- cbind(x, df_new[[ y ]])
  colnames(d)[ ncol(d) ] <- y
  d
  }

Map(myCbind, df_list, colnames(df_new))

检查名称:

res <- Map(myCbind, df_list, colnames(df_new))

sapply(res, function(i) tail(colnames(i), 1))
# mtcars1 mtcars2 mtcars3 mtcars4 
#     "a"     "b"     "c"     "d" 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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