首页 > 解决方案 > 在列表的每个数据框中创建新列,并根据位置(R)从字符向量中填充字符串

问题描述

我有一个数据框列表和一个带有字符串的字符向量。数据帧的数量和字符串的数量chr是相同的。

我想用字符向量中相应位置的字符串填充列表中每个数据帧中的特定列

dfs<-list(mtcars[,1:4], iris[,1:4])
dfs <- lapply(dfs, function(x) transform(x, mycol=""))

z <- c("red", "blue")

作为我想要的最终输出

dfs[[1]]$mycol填充red

dfs[[2]]$mycol填充blue

从概念上讲,我认为我需要做这样的事情:

dfs <- lapply(dfs, function(n) dfs[[n]]$mycol <- z[n]),但我得到了错误

z[n] 中的错误:无效的下标类型“列表”

真实数据是 97 个元素的列表

标签: rlapply

解决方案


您也可以尝试直接mycol使用mapply()

#Data
dfs<-list(mtcars[,1:4], iris[,1:4])
z <- c("red", "blue")
#Code
L <- mapply(function(x,y) {x$mycol<-y;return(x)},x=dfs,y=z,SIMPLIFY = F)

推荐阅读