[英]data.frame into matrix (R) , rownames() error
我有一个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()
代替,它可以正常工作
错误是指分配给行名的值是一个列表,并且其中包含单个向量的列表的“长度”为1,而不是向量的长度。 我无法说出为什么会发生这种情况,因为通常的行为是使[[]函数将单个列“拖放”到原子向量中。 像您一样,我希望rnames
是长度为39的原子向量,但看来您需要使用它:
rownames(mat_data) <- unlist( rnames ) # assign row names
Rich和Apom比我有更好的眼睛。 该read_csv函数产生具有不同的类和除将具有相关联的提取功能的对象read.csv
。 由于您处于“ hadleyverse”中,因此您应该使用以下代码:
rnames <- data[[1]]
该tibble
-classed对象有不同的版本的[
-function不是做data.frames。 [[
-函数对于这两个类似乎作用相同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.