可能是重复问题:
R和只有一行的矩阵
我有数百个矩阵,在for循环中对它们进行一些改变,包括排序。问题在于只有一行的矩阵。所以当我对它们进行排序时,它们的类会从矩阵变成字符,如下所示:
> test1
Gene ID Gene Name Score(d) Fold Change q-value(%)
[1,] "g17035" "17035" "-29.1" "0.877" "303.826"
> class(test1)
[1] "matrix"
当应用排序时,它会变成字符类:
test1 <- test1[order(test1[, 5]), ]
> test1
Gene ID Gene Name Score(d) Fold Change q-value(%)
"g17035" "17035" "-29.1" "0.877" "303.826"
> class(test1)
[1] "character"
我甚至使用了as.matrix,但它改变了矩阵的顺序:
然后它会变成这样:test1 <- as.matrix(test1[order(test1[, 5]), ])
> test1
[,1]
Gene ID "g17035"
Gene Name "17035"
Score(d) "-29.1"
Fold Change "0.877"
q-value(%) "303.826"
我应该如何修复它? 提前感谢您。
drop=FALSE
,则test1
将被转换为向量。当您稍后执行test1[,4]
时,您正在尝试获取向量的列,这是不可能的,因为向量没有任何列。test1 <- test1[order(test1[, 5]),,drop=FALSE]
(不使用as.matrix
)应该将其保留为具有1行和5列的矩阵,并允许您稍后无问题地提取第4列。 - Backlin[
,<-
,+
等实际上是普通函数,虽然具有常规语法,而且?"["
和?"<-"
为它们提供了良好的文档,这对我帮助很大。 - Backlinoptions(error=browser)
来调试函数,运行函数以引发错误并确认test1
是否实际上是它应该的东西。 - Backlin