在R中使用llply(plyr包)中的循环

时间:2015-11-24 18:47:34

标签: r loops plyr

我使用循环删除数据框中与复杂模式匹配的特定行。循环适用于单个数据帧。

我想对存储在列表中的多个数据帧使用相同的过程。而不是围绕这个循环编写另一个循环,我想到使用plyr。但它没有按预期工作。

以下是一个例子:

# create a list
testlist<-list(as.data.frame(Titanic),
               as.data.frame(Titanic))


# test
for(i in 1: nrow(testlist[[2]]))
  if(grepl("1st",testlist[[2]][i,1],perl = T)==TRUE)
    testlist[[2]]<-testlist[[2]][-i,] else 
      testlist[[2]]<-testlist[[2]]


testlist[[2]]
# works

# use plyr
testlist<-
llply(.data = testlist, 
    .fun = function (x) 
      for(j in 1:nrow(x))
        if(grepl("1st",x[j,1],perl = T)==TRUE)
          x<-x[-j,] else 
            x<-x
  )

testlist[[1]]
# returns NULL

1 个答案:

答案 0 :(得分:0)

功能结束时缺少的详细信息为return(x)

testlist<-
  llply(.data = testlist, 
        .fun =   function (x){
          for(j in 1:nrow(x))
            if(grepl("1st",x[j,1],perl = T)==TRUE)
              x<-x[-j,] else 
                x<-x;
              return(x)}
  )