我有一个包含名称的列表,我想创建一个数据框,其中包含这些名称作为列名和一个NA值。我将在循环中替换一些NA。
n <- c('a','b')
d <- data.frame(a=NA, b=NA)
所以基本上我有一个像n
这样的矢量,我想自动创建像d
这样的NA数据帧。有没有方便的方法呢?
答案 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_
等