如果声明填充矩阵,不正确的下标数

问题描述:

我想写一个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

+1

提供示例数据和预期输出。两个数据框都有相同的变暗吗? – user5249203

您可能要尝试指定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