我正在创建如下所示的数据框:
overlap D R
H3K9ME3 2635 209 91237
但是我有一些缺少一个或多个列。我需要创建这些列并为条目赋值NA
。我试图创建一个循环,可以从列表(字符向量)中搜索缺少的列,并填写任何缺少的列。
以下是一个例子:
# this one is missing a column:
t_table<-structure(list(overlap = 14L, R = 59329L),
.Names = c("overlap","R"),
class = "data.frame", row.names = "H3K27ME3")
> t_table
overlap R
H3K27ME3 14 59329
在这个循环中,我尝试搜索并添加缺少的列:
t_table2<-t_table
for(column in c("overlap","D","R")){
if( ! column %in% colnames(t_table2)) t_table2<-cbind(t_table2,column=NA)
}
t_table2
但是,列名称是&#34;列&#34;的文字字符串。而不是column
的价值;
> t_table2
overlap R column
H3K27ME3 14 59329 NA
如何设置此项,以便生成的列名称是对象column
的值,而不是&#34;列&#34;,在这种情况下?
答案 0 :(得分:1)
您可以使用setNames
动态设置新数据框的列名称:
t_table2<-t_table
for(column in c("overlap","D","R")){
if( ! column %in% colnames(t_table2)) {
t_table2<-setNames(cbind(t_table2,NA), c(names(t_table2), column))
}}
t_table2
overlap R D
H3K27ME3 14 59329 NA