在R中使用llply(plyr包)内的环路
我使用循环删除数据帧中与复杂模式匹配的特定行。循环在单个数据帧上工作 我想对存储在列表中的几个数据帧使用相同的过程。我没有围绕这个循环编写另一个循环,而是考虑使用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]]))
# 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)
之后,它就工作了。