我想知道是否有可能将列表元素添加为数据帧的列。
例如,我定义了一个列表
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
来添加特定位置的列。