Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中使用llply(plyr包)内的环路_R_Loops_Plyr - Fatal编程技术网

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

在R中使用llply(plyr包)内的环路,r,loops,plyr,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]]))

我使用循环删除数据帧中与复杂模式匹配的特定行。循环在单个数据帧上工作

我想对存储在列表中的几个数据帧使用相同的过程。我没有围绕这个循环编写另一个循环,而是考虑使用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
#创建一个列表

testlist函数末尾缺少的细节是
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)}
  )

testlist您是否尝试在
llply
之前定义函数并使用单个数据帧进行测试?@Bernardo。我只是尝试在外部定义函数,但它给出了相同的错误。对象为空。但是您是否尝试在没有
llply
的情况下使用函数,即在单个数据帧上?关键是要找出错误是在您的函数上还是在您的
llply
中。谢谢您的帮助。它不能在单个数据帧上工作。但是在添加
return(x)
之后,它就工作了。