データフレームに対応するさまざまな名前を含むデータフレームがありIndices
ます(つまり、名前"Index 1"
には対応するデータフレームがありますIndex 1
)。
ここで、すべてのデータ フレームに対してカスタム関数を実行し、calcScores
そのデータ フレームにいくつかの列を追加したいと考えています。私はグローバル環境にいないので、その「新しい」データ フレームを返し、それを元の変数に割り当て直したいIndex 1
のでIndex 1
、列が追加された新しいデータ フレームができました。
これが私のコードです(すべてのデータは非常にカスタムであるため、これを100%再現できる可能性はありませんが、私の質問を理解していただければ幸いです)。
# Here the unique Index names are derived and stored
# Problem is the index names are stored as "Index 1", "Index 2" etc.
# Thats why I have to adjust These #titles and create individual data Frames
Indices <- unique(df[1])
apply(unique(df[1]), 1, function(x){
assign(gsub(" ","",x,fixed=TRUE), subset(df,ticker==x), envir = .GlobalEnv)
})
calcRollingAverage <- function(Parameter, LookbackWindow){
Output <- rollapply(Parameter, LookbackWindow, mean, fill=NA, partial=FALSE,
align="right")
}
calcScores<-function(Index, LookbackWindow){
Index$PE_Avg = calcRollingAverage(Index$PE_Ratio, LookbackWindow)
Index$PE_DIV_Avg = Index$PE_Ratio/Index$PE_Avg
Index$PE_Score = cut(Index$PE_DIV_Avg, breaks=PE_Breaks, labels=Grades)
return(Index)
}
apply(Indices,1,function(x) assign(gsub(" ","",x,fixed=TRUE), calcScores(get(gsub(" ","",x,fixed=TRUE)),lookback_window)))
私の問題はapply
全体get
にassign
あり、gsub
物語にあると思います。スコープは明らかに問題です...現時点では、適用すると次のエラーが発生します。
Error: unexpected symbol in:
"apply(Indices,1,function(x) assign(gsub(" ","",x,fixed=TRUE), calcScores(get(gsub(" ","",x,fixed=TRUE)),lookback_window))
apply"