为什么这样做,
# add ONE column to dataframe with zero rows
x <- data.frame(a=character(0))
x["b"] <- character(0)
虽然这不是?
# add SEVERAL columns to dataframe with zero rows
x <- data.frame(a=character(0))
x[c("b", "c")] <- character(0)
error in value[[jvseq[[jjj]]]] : index out of limits [... freely translated]
注意,如果我们有非零行,这是完全可以的。
x <- data.frame(a=1)
x["b"] <- NA
x <- data.frame(a=1)
x[c("b", "c")] <- NA
将多列添加到零行数据帧的简单替代方法是什么?
答案 0 :(得分:1)
来自help("[.data.frame")
:
数据帧可以在多种模式下编制索引。当[和[[使用 使用单个向量索引(x [i]或x [[i]]),它们索引数据帧 好像它是一个清单。
来自help("[")
:
递归(类似列表)对象
索引[类似于原子向量并选择指定元素的列表。
因此,您需要传递一个列表(或data.frame):
x <- data.frame(a=character(0))
x[c("b", "c")] <- list(character(0), character(0))
str(x)
#'data.frame': 0 obs. of 3 variables:
# $ a: Factor w/ 0 levels:
# $ b: chr
# $ c: chr