ここでは、関数内からグローバル環境内の複数のオブジェクトに値を代入する方法が不思議です。これはlapply
(assign
は<<-
よりも安全かもしれませんが、私はそれを実際に使ったことはなく、それに精通していません)を使用しています。関数内から.GlobalEnvに複数のオブジェクトを割り当てよう
#fake data set
df <- data.frame(
x.2=rnorm(25),
y.2=rnorm(25),
g=rep(factor(LETTERS[1:5]), 5)
)
#split it into a list of data frames
LIST <- split(df, df$g)
#pre-allot 5 objects in R with class data.frame()
V <- W <- X <- Y <- Z <- data.frame()
#attempt to assign the data frames in the LIST to the objects just created
lapply(seq_along(LIST), function(x) c(V, W, X, Y, Z)[x] <<- LIST[[x]])
私のコードの一部または全部を短縮して、この作業を改善してください(またはより速く/より速く動作するようにしてください)。
この質問かそれに対する答えは大きな「子どもたち、家ではこれをしないでください!」と来なければなりません。免責事項。ご存知のように、関数内のグローバルな割り当ては、リチャード・バーンズ(http://www.burns-stat.com/pages/Tutor/R_inferno.pdf) – flodel
@flodelを引用すると、災害のレシピ、つまり「火山の命」のレシピです。私はプログラマーではないので、あなたは割り当てを行うことの問題点を簡単に説明できますか? –
私は引用したセクションを読んでいます。それは公共の消費のためのコードでは賢明だが個人的なコードではないようだ。あなたはこの影響を受けないで達成する方法を見ることができますか? –