如果声明填充矩阵,不正确的下标数
问题描述:
我想写一个for循环,如果一个矩阵的单元格匹配一个字母,然后填充匹配的整个行的空白矩阵。这里是我的代码如果声明填充矩阵,不正确的下标数
mets<-data.frame(read.csv(file="Metabolite_data.csv",header=TRUE))
full<-length(mets[,6])
A=matrix(,nrow=4930,ncol=8, byrow=T)
for (i in 1:full){
if (mets[i,6]=="A") (A[i,]=(mets[i,]))
}
如果我与它的工作原理,以填补矩阵A的该行单号if语句代替我,但它不会填满更多然后一行。 TIA
答
您可能要尝试指定ncol=dim(mets)[2]
以确保您提供相同数量的输入以填充矩阵。
答
您可能会遇到从数据框到矩阵的问题。可能只是使用“mets”作为矩阵而不是数据框可以解决您的问题,或者您可以在for循环中使用as.matrix
。由于我没有您的“metabolite_data.csv”,因此后者具有组成数据的示例:
mets <- matrix(sample(LETTERS[1:4], 80, replace = TRUE), nrow = 10, ncol = 8)
mets <- as.data.frame(mets)
A <- matrix(nrow = nrow(mets), ncol = ncol(mets), byrow = TRUE)
for(i in 1:nrow(mets)){
if(mets[i,6] == "A"){
A[i,] = as.matrix(mets[i,])
}
}
print(A)
+0
工作就像一个魅力谢谢 – ljohnson
提供示例数据和预期输出。两个数据框都有相同的变暗吗? – user5249203