ループを使用して新しい値を複数のデータ フレームに割り当てたい場合に問題が発生します。
私は正しい方法が
for (df.name in c('df1', 'df2', 'df3')) {
assign(df, new.value)
}
私の質問は、なぜ私はこれを行うことができないのですか
for (df.name in c('df1', 'df2', 'df3')) {
eval(parse(text=df.name)) <- new.value
}
ありがとう!
評価/解析を使用できます:
eval(parse(text= paste(df.name, "<- new.value")))
あなたが得ていたエラー、
割り当ての対象は非言語オブジェクトに展開されます
これは、評価される R 式ではないeval(parse(text=df.name))variable を返すためです。df1
eval/parse は暗く、危険で、管理不能なゾンビ コードにつながる魔法であることを覚えておいてください。コードを記述する別の方法が見つかった場合は、代わりにそれを選択してください。
コメントで述べたように、同様のプロパティを持つ複数のデータ フレームがある場合、それらをリストとして操作する方が簡単なことがよくあります。
df_list <- list(df1 = df1, df2 = df2, df3 = df3)
次に、 を使用lapplyしてループ内の各データ フレームを操作したり、 または を使用してそれらを 1 つのデータ フレームに結合しrbindたりできdplyr::bind_rowsます。