通过赋值字符串向量创建具有列名的空数据框?

Eri*_*ang 64 r dataframe

1.创建一个空数据框

y <- data.frame()
Run Code Online (Sandbox Code Playgroud)

2.将x,一个字符串向量分配给y作为其列名

x <- c("name", "age", "gender")
colnames(y) <- x
Run Code Online (Sandbox Code Playgroud)

结果:

Error in `colnames<-`(`*tmp*`, value = c("name", "age", "gender")) : 
  'names' attribute [3] must be the same length as the vector [0]
Run Code Online (Sandbox Code Playgroud)

实际上,x长度是动态的,所以

y <- data.frame(name=character(), age=numeric(), gender=logical())
Run Code Online (Sandbox Code Playgroud)

不是命名列的有效方法.我该如何解决这个问题?谢谢

Ron*_*hah 172

怎么样,

df <- data.frame(matrix(ncol = 3, nrow = 0))
x <- c("name", "age", "gender")
colnames(df) <- x
Run Code Online (Sandbox Code Playgroud)

在单行中完成所有这些操作

setNames(data.frame(matrix(ncol = 3, nrow = 0)), c("name", "age", "gender"))

#[1] name   age    gender
#<0 rows> (or 0-length row.names)
Run Code Online (Sandbox Code Playgroud)

  • @DDchen如果你有一个数据框“df”,这应该可以工作“df[new_col_names] &lt;- NA_character_” (4认同)