すでに答えがありますが、アーカイブからはわかりません。
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セグメントも機能していません(つまり、関数によって決定された値(正常に機能します)を適切なデータフレーム列に割り当てていません)。
繰り返しになりますが、これがすでに回答されている場合はお詫び申し上げます。ご協力いただきありがとうございます。