我有以下dataframe和vector:
ddf = data.frame(a=rep(1,10), b=rep(2,10))
xx = c("c", "d", "e", "f")
我如何在dataframe中添加新的空列,这些列的名称是xx中的项目?
我试过了,但它不起作用:
ddf = cbind(ddf, data.frame(xx))
Error in data.frame(..., check.names = FALSE) :
arguments imply differing number of rows: 10, 4
以下也不起作用:
for(i in 1:length(xx)){
ddf$(xx[i]) = ""
}
Error: unexpected '(' in:
"for(i in 1:length(xx)){
ddf$("
}
Error: unexpected '}' in "}"
2条答案
按热度按时间yhxst69z1#
这将让你在那里:
你不能直接使用
ddf$xx
,因为它会试图赋值给一个名为xx
的列,而不是解释xx
。你需要使用[
和[<-
函数,当你处理字符串/向量时使用方括号-如ddf["columnname"]
或ddf[c("col1","col2")]
,或者像ddf[xx]
这样的存储向量。它选择列的原因是因为
data.frames
本质上是列表:...每一列对应一个列表条目。因此,如果你不使用逗号来指定一行,如
ddf["name",]
或一列,如ddf[,"name"]
,默认情况下你会得到列。如果您正在使用0行数据集,则不能使用像
NA
这样的值作为替换。而是使用list(character(0))
替换,其中character(0)
可以替换为numeric(0)
,integer(0)
,logical(0)
等,具体取决于您想要为新列使用的类。8wtpewkr2#
这似乎是成功的: