将单个参数从向量传递到复杂函数

时间:2013-12-11 22:38:01

标签: r function loops

问题:循环ID向量的最佳方法是什么,以便将一个ID作为参数传递给函数,函数运行,然后使用下一个ID运行再次使用该函数,依此类推,直到该函数在我的向量中使用30个ID运行30次?

其他信息:我有一个复杂的功能,可以从多个不同的源检索数据,操作它,将其写入另一个表,然后在完成后通过电子邮件发送给我。它有几个硬编码的参数,以及每次我想运行它时手动输入的ID参数。

对不起,我不能提供很多细节,但这是我的设置的极简化版本

#Manually Entered Arguments

ID<-3402
Arg1<- "Jon_Doe"
Arg2<- "Jon_Doe@gmail.com"

#Run Function
  RunFun <- function (ID, arg1, arg2) {...}

现在,我使用以下命令从Excel列导入了30个非顺序ID(所有数字):

ID.Group<- scan()

我知道通过一个函数一次运行每个ID是非常低效的,但功能的复杂性和技术限制只允许一次运行一个。

我刚刚开始使用R,所以如果其中任何一个没有意义,我很抱歉。我花了最后5个小时试图弄清楚这一点,所以任何帮助将不胜感激。 谢谢!

1 个答案:

答案 0 :(得分:0)

Vectorize函数实际上是mapply的包装器,并且通常在向量化不是函数体的自然结果时使用。如果您使用arg1和arg2的值编写函数,如下所示:

RunFun <- function (ID, arg1="Jon_Doe", arg2="Jon_Doe@gmail.com") {...}
V.RunFun <- Vectorize(Runfun)
V.RunFun ( IDvector )

这通常与integrateouter一起使用,要求它们的参数返回相等长度的向量来输入。