如何使用申请带参数化功能的矢量?

时间:2014-04-08 01:35:01

标签: r function apply

我有以下功能

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

1 个答案:

答案 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)。