【发布时间】:2017-05-23 23:36:36
【问题描述】:
我有一个 93 x 28 的 data.frame ("data.csv") 我想将其转换为矩阵以进一步绘图,它看起来像这样:
SYMBOL BT.20 CAL.51 MDA.MB.436 BT.549
A 3.039 4.908 3.865 3.818
B 4.349 5.399 6.071 5.313
C 7.509 8.091 6.48 6.660
D 3.429 4.394 3.622 3.873
E 3.369 6.716 3.557 3.346
代码
data <- read_csv("data.csv")
rnames <- data[,1] # assign labels in column 1 to "rnames"
mat_data <- data.matrix(data[,2:28]) # transform column 2 - end into a matrix
rownames(mat_data) <- rnames # assign row names
生产
ERROR: Error in `rownames<-`(`*tmp*`, value = list(SYMBOL = c("A", "B", :
length of 'dimnames' [1] not equal to array extent
第 1 列没有重复名称或缺失值
编辑:
用read.csv() 代替,它工作得很好
【问题讨论】:
-
你应该调试你的代码。添加
print(rnames)。 -
或者你可以发布
str(rnames)和str(mat_data)的结果。好像是维度问题 -
你试过
read.csv("data.csv", row.names = 1)吗?它在read.csv中分配它们。 -
感谢大家的帮助,实际上我正在使用 Rstudio 的“导入数据集”功能加载 data.frame,即 read_csv ,如果我使用 read.csv( ) 我没有得到错误。我猜他们默认情况下对标头的处理方式不同?
-
它们是两个不同的函数。
read.csv是基础 R 之一。