问题:循环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个小时试图弄清楚这一点,所以任何帮助将不胜感激。 谢谢!
答案 0 :(得分:0)
Vectorize
函数实际上是mapply
的包装器,并且通常在向量化不是函数体的自然结果时使用。如果您使用arg1和arg2的值编写函数,如下所示:
RunFun <- function (ID, arg1="Jon_Doe", arg2="Jon_Doe@gmail.com") {...}
V.RunFun <- Vectorize(Runfun)
V.RunFun ( IDvector )
这通常与integrate
或outer
一起使用,要求它们的参数返回相等长度的向量来输入。