我正在尝试将矩阵转换为数据框,并将名称分配到一行中。
当我使用?as.data.frame
时,有一个名为col.names
的参数似乎对我不起作用,我做错了吗?
as.data.frame(matrix(c(1:4), nrow=2), col.names=c("a","b"))
输出:
V1 V2
1 1 3
2 2 4
预期产出:
a b
1 1 3
2 2 4
我知道我可以稍后用`colnames(matrix)= c(“a,”b)分配它,但我只是想知道是否可以在一行中完成它。 (
答案 0 :(得分: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
在OP代码中,matrix
输出没有任何列名,因此as.data.frame
创建列名称为' V1',& #39; V2'默认情况下。对于col.names
as.data.frame
,class
参数不是matrix
,所以它没有任何效果
如果我们引用?as.data.frame
类'矩阵'
的S3方法as.data.frame(x,row.names = NULL,optional = FALSE,..., stringsAsFactors = default.stringsAsFactors())
答案 1 :(得分:1)
我知道这是一个老问题,但是:
bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash: no job control in this shell
不是原始海报想要的“一行”中的解决方案,而只是使用管道?
一切顺利, 帕特里克