如果已经有答案,请原谅,但我无法从档案中完全弄清楚。
我通过 R 中的 for 循环生成了一个非常相似的函数列表:
adoptint.fun=list()
for(i in 1:40) {
#function name for each column
func.name <- paste('adoptint',i,sep='')
#function
func = paste('function(yearenter, adoptyear, yearleave) {ifelse(is.na(yearenter) | yearenter >', i+1905, ' | is.na(adoptyear) | yearleave > ', i+1905, ', NA, ifelse(yearenter <= ', i+1905, ' & adoptyear <= ', i+1905, ', 1, 0))}', sep='')
adoptint.fun[[func.name]] = eval(parse(text=func))
}
我现在有兴趣应用此函数为尚未在数据框中创建的变量生成值。我想使用循环或类似方法来执行此操作,因为过程是相同的,尽管特定值在 40 次迭代中发生了变化。代码看起来像:
#generate variables that will be inserted into dataframe, dfanal.reshape
var_names <- paste("dfanal.reshape$adopt", 1:40, sep="")
#run function i to obtain values for variable i, which should be appended to dataframe
for(i in 1:40){
var_names[i] <- eval(parse(paste("adoptint.fun[[" ,i, "]](dfanal.reshape$intoobsyear,dfanal.reshape$adoptyear,dfanal.reshape$yearleave)", sep="")))
}
我已经为 var_names 段使用了 mget,但这似乎不起作用,并且 eval 段也不起作用(即,没有将函数确定的值(工作正常)分配给适当的数据框列。
再次,如果这已经得到回答,我们深表歉意,并提前感谢您的帮助。