r-添加列表元素作为数据帧的列



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

例如,我定义了一个列表

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(("或直接寻址数据帧,但这似乎不起作用。有人能帮我吗?

你可以做:

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

请注意,以数字开头的列名不是一种好的做法。

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

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

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

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

df[paste0(a)] <- NA

带有add_column的选项

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

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

最新更新