如何将列添加到列表中的数据框?

时间:2019-07-15 02:45:43

标签: r dataframe wrangle

我有一个数据帧列表。我想向每个数据框添加一个新列。例如,我有三个数据帧,如下所示:

a = data.frame("Name" = c("John","Dor"))
b = data.frame("Name" = c("John2","Dor2"))
c = data.frame("Name" = c("John3","Dor3"))

然后我将它们放入列表:

dfs = list(a,b,c)

然后我想向每个数据帧添加一个具有唯一值的新列,例如:

dfs[1]$new_column <- 5

但是出现以下错误:

"number of items to replace is not a multiple of replacement length"

我也尝试使用两个方括号:

dfs[[1]]$new_column <- 5

这不会返回错误,但不会添加该列。

这将在“ for”循环中,并且将不同的值添加到每个数据帧。

任何帮助将不胜感激。预先感谢!

1 个答案:

答案 0 :(得分:1)

假设您要为每个数据框添加一个值为Language.Haskell.Interpreter的新列。我们可以使用5:7

Map

有了new_value <- 5:7 Map(cbind, dfs, new_column = new_value) #[[1]] # Name new_column #1 John 5 #2 Dor 5 #[[2]] # Name new_column #1 John2 6 #2 Dor2 6 #[[3]] # Name new_column #1 John3 7 #2 Dor3 7 ,您可以做到

lapply

或者如@camille所述,如果您在lapply(seq_along(dfs), function(i) cbind(dfs[[i]], new_column = new_value[i])) 循环中使用[[进行索引,则可以使用

for

等效的for (i in seq_along(dfs)) { dfs[[i]]$new_column <- new_value[[i]] } 版本是

purrr

library(purrr)
map2(dfs, new_value, cbind)