1

我是 R 的新手,我正在处理循环。我有两个矩阵,它们是 s1(包含 NA 值)和 B。我正在尝试这个循环并且在检索输出时遇到问题。

m1<-function(s1,B)
 {
  for(i in 1:nrow(s1))
  { 
   if(is.na(s1[i,])==T) {mi<-rbind(mi,B[i,])}
  }
  print(mi)
 }
outB<-m1(s1,B)

我想要一个由 B[i,] 的行绑定形成的新 data.matrix。B[i,] 应该与 s1[i,] 匹配。任何帮助将不胜感激。

4

1 回答 1

1

是的,这并不是在 R 中真正做到这一点的方法。这将取代那个丑陋的循环:

m1<-function(s1,B)  # use vector indexing rather than a loop
 { mi <- B[ !is.na(s1),  ] # notice logical index and no "=="
  print(mi)
 }
outB<-m1(s1,B)

当您真正想要做的只是选择行的子集时,您真的不应该将连续的行绑定在一起。效率极低。

于 2013-07-11T03:58:14.013 回答