将列表元素添加为数据框的列

时间:2020-10-02 11:43:09

标签: r list dataframe

我想知道是否有可能将列表元素添加为数据框的列。

例如我已经定义了一个列表

a <- c(1, 2, 3, 4, 5)

,我想将其添加为数据框的列

df <- data.frame(matrix(ncol = 3, nrow = 2500))
x <- c("P", "B", "R")
colnames(df) <- x

我的数据框已包含P,B和R列中的值。

现在,我想将列表a添加为新列,每行中都没有任何值(或者也可以为0)。

最后,我的数据框应具有列P,B,R,1、2、3、4、5。

我正在考虑使用'cbind()'或直接解决数据帧问题,但这似乎行不通。有人可以帮我吗?

3 个答案:

答案 0 :(得分:2)

您可以这样做:

df[as.character(a)] <- NA

> head(df)
   P  B  R  1  2  3  4  5
1 NA NA NA NA NA NA NA NA
2 NA NA NA NA NA NA NA NA
3 NA NA NA NA NA NA NA NA
4 NA NA NA NA NA NA NA NA
5 NA NA NA NA NA NA NA NA
6 NA NA NA NA NA NA NA NA

请注意,以数字开头的列名不是一个好习惯。

答案 1 :(得分:0)

我认为@sindri_baldur的方法已经足够简单了。

这是另一个基本的R选项,但是有点复杂

cbind(df,setNames(rep(list(NA),length(a)),a))

答案 2 :(得分:0)

我们也可以用paste0换行以转换为字符

df[paste0(a)] <- NA

带有add_column

的选项
library(tibble)
add_column(df, !!! setNames(rep(list(NA), length(a)), a)) 

我们可以指定.after.before将列添加到特定位置。