使用NA创建一行数据框以获取列名列表

时间:2015-08-12 13:41:05

标签: r dataframe

我有一个包含名称的列表,我想创建一个数据框,其中包含这些名称作为列名和一个NA值。我将在循环中替换一些NA。

n <- c('a','b')
d <- data.frame(a=NA, b=NA)

所以基本上我有一个像n这样的矢量,我想自动创建像d这样的NA数据帧。有没有方便的方法呢?

1 个答案:

答案 0 :(得分:3)

有几种不同的方法可以做到这一点。这是两个 -

setNames(do.call(data.frame, rep(list(NA), length(n))), n)
#    a  b
# 1 NA NA

基本上适用于任何n

N <- letters[1:6]
setNames(do.call(data.frame, rep(list(NA), length(N))), N)
#    a  b  c  d  e  f
# 1 NA NA NA NA NA NA

第二种方法使用as.data.frame()

as.data.frame(setNames(rep(list(NA), length(N)), N))
#    a  b  c  d  e  f
# 1 NA NA NA NA NA NA

或者,由于您只使用了NA值,NA[seq_along(N)]可以替换rep()

setNames(data.frame(as.list(NA[seq_along(N)])), N)
#    a  b  c  d  e  f
# 1 NA NA NA NA NA NA

请注意,所有这些都会生成逻辑分类列。对于其他课程,您可以使用NA_integer_NA_character_