我有一个列表的名称,我想创建一个数据框架与这些名称作为列名和一个NA值。我将在一个循环中替换一些NAs。
n <- c('a','b')
d <- data.frame(a=NA, b=NA)
基本上,我有一个像n
这样的向量,我想自动创建一个像d
这样的na数据帧。有什么方便的方法吗?
有几种不同的方法可以做到这一点。这里有两个
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_
等