R:如何使用谓词函数过滤矩阵?

时间:2016-01-07 20:55:21

标签: r

作为R newbie我想过滤具有某些谓词函数的矩阵。 例如,我想过滤掉一行中所有相同的元素。

所以我很乐意编写这样的函数:

af <- function(a){
     n        <- nrow(a)
     m        <- ncol(a)
     a_Folger <- matrix(0, nrow=n, ncol=m)

     for(i in 1:n){
        for(j in 2:m){
           if( a[i,j] == a[i,j-1]) { 
              a_Folger[i,j]   <- a[i,j] 
              a_Folger[i,j-1] <- a[i,j]
           }
     }  
 }
 a_Folger

}

到目前为止这种方法有效,但它没有“R”代码......

有没有更好的“R”方法来实现这一目标?

1 个答案:

答案 0 :(得分:2)

你想要的东西闻起来像&#34; R&#34;代码!!! 。你确定吗???好, 在这里:

t(apply(a,1,function(x){ y<-rle(x); y[[2]][y[[1]]==1]<-0; rep(y[[2]],y[[1]]) }))

它为您的af函数产生了相同的结果并且更快(但在可读性方面没有赢得积分:)。不过,您可以了解如何使用:sample[[rleapplyrept和{{1} }。

system.time