重复相同的功能但改变常数并保存结果(在r中)

时间:2014-05-11 19:04:14

标签: r function if-statement for-loop constants

我有一个应用于数据帧的函数(下面我称之为function1name)。该功能有多个输出保存在列表中。

函数内部是一个常量(cval)。我想使用许多不同的常数值(例如1到5之间或1到100之间)多次在同一数据帧上运行该函数。对于函数的每次运行,我想将结果保存在列表中。

这是我尝试过的:

newfunction<-function (df)
{
for(i in 1:5)  #this could be 1:10, 1:100 etc. but I'm just trying 1:5 for now
{robj<-list(function1name(df, cval=i)) #function1name is the function with the constant
}
}

newfunction(df)

这个问题是它只在我的对象robj中保存了function1name的最后一次运行。即在上面,它只在cval = 5时保存function1name的执行。我想在cval = 1,2,3,4和5时保存在该函数的列表中。

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:0)

list也可以包含list个元素。因此,您可以对多个常量使用相同的方法:

cval <- 1:10
l <- vector(mode = "list", length = length(cval)

for (i in seq(along=cval)) {
  l[[i]] <- list(function1name(df, cval=cval[i]))
}

或者您可以使用lapply

cval <- 1:10
l <- lapply(cval, function1name, df = df)