我有以下功能
myfunc <- function(x,myparam) {
x <- do_sth(x, myparam)
plot(x)
}
然后应用于这些数据:
files <- Sys.glob("myfile_no*.txt") # This is a vector
目前我执行以下操作:
for (i in 1:length(files)) {
mf <- files[i]
myfunc(mf,myparam=3);
}
如何使用apply
或其他变体替换上面的for循环?
我尝试了这个错误:
> apply(x,1, myfunc, myparam)
Error in apply(files, 1, myfunc, myparam = 3) :
dim(X) must have a positive length
Execution halted
答案 0 :(得分:1)
所以,显而易见的解决方案并不适用,而是适用:
output_object <- lapply(files, myfunc, myparam = 3)
这也有一个优点,就是允许你使用匿名的#39;如果你想要一个稍微清洁的环境,你会发挥作用。
但是,我想知道你想要的原因是什么?是否试图摆脱for循环中的感知缓慢?如果是这样,你就不会看到那么大的进步;人们抱怨&#34;我的for循环很慢&#34;通常是抱怨&#34;我正在尝试非原始数据类型的for循环&#34;或者&#34;我正在尝试一个for循环,迭代地添加到一个没有定义长度的对象&#34;。这些情况并非如此。我唯一能想到的就是提高你的速度就是停止定义mf - 只需调用myfunc(files [i],myparam = 3)。