0

データフレームに対応するさまざまな名前を含むデータフレームがあり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全体getassignあり、gsub物語にあると思います。スコープは明らかに問題です...現時点では、適用すると次のエラーが発生します。

Error: unexpected symbol in:
"apply(Indices,1,function(x) assign(gsub(" ","",x,fixed=TRUE), calcScores(get(gsub(" ","",x,fixed=TRUE)),lookback_window))
apply"
4

3 に答える 3