使用as.data.frame函数为数据框指定名称

Sau*_*cia 10 r dataframe

我试图将矩阵转换为数据框,并在一行中分配名称.

正如我所使用的那样,?as.data.frame有一个参数col.names对我来说似乎不起作用,我做错了吗?

as.data.frame(matrix(c(1:4), nrow=2), col.names=c("a","b"))
Run Code Online (Sandbox Code Playgroud)

输出:

   V1 V2  
1  1  3  
2  2  4  
Run Code Online (Sandbox Code Playgroud)

预期产出:

   a  b  
1  1  3  
2  2  4  
Run Code Online (Sandbox Code Playgroud)

我知道我可以稍后用`colnames(matrix)= c("a,"b)分配它,但我只是想知道是否可以在一行中完成它.(

akr*_*run 6

我们可以使用dimnames参数,matrix这将在转换为时以列名返回data.frame

as.data.frame(matrix(1:4, nrow=2, dimnames = list(NULL, c("a", "b"))))
#  a b
#1 1 3
#2 2 4
Run Code Online (Sandbox Code Playgroud)

在OP的代码中,matrix输出没有任何列名,因此as.data.frame默认情况下将列名称创建为"V1","V2".这个col.names论点不as.data.frame适合class matrix,所以它没有任何效果

如果我们引用文档 ?as.data.frame

类'矩阵'的S3方法

as.data.frame(x,row.names = NULL,optional = FALSE,...,stringsAsFactors = default.stringsAsFactors())

  • 是的,这些是让我们都喜欢在R中编码的小东西. (6认同)
  • 日常用语: 1. 设计缺陷。2. 文档不完善。 (3认同)
  • 是的,这是在`Usage`下,然后在那里,有一个名为`Arguments`的部分,这是我找到`col.names`的地方,但也许它意味着别的东西.谢谢@akrun (2认同)
  • @SaulGarcia它有不同的方法.对于`list`,你可以传递col.names,但是你有一个`matrix` (2认同)