if语句填写Matrix,下标数不正确

时间:2017-04-12 18:12:40

标签: r matrix

我正在尝试编写一个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,]))

}

如果我用if一个数字替换if语句中的i,它就可以填充矩阵A的那一行,但是它不会填充多于一行。 TIA

2 个答案:

答案 0 :(得分:1)

您可能会遇到从数据框到矩阵的问题。可能只是使用“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)

答案 1 :(得分:0)

您可能想尝试指定ncol=dim(mets)[2]以确保提供相同数量的输入来填充矩阵。