r语言 - 为列名称列表创建带有NAs的单行数据框架



我有一个列表的名称,我想创建一个数据框架与这些名称作为列名和一个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_

最新更新