1

ループを使用して新しい値を複数のデータ フレームに割り当てたい場合に問題が発生します。

私は正しい方法が

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
}

ありがとう!

4

1 に答える 1

7

評価/解析を使用できます:

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ます。

于 2013-05-29T10:10:10.720 に答える