その場で新しい変数名を作成することは可能ですか?
リストからデータフレームを読み取り、最後に数字が付いた新しい変数に入れたいのですが。orca1、orca2、orca3のようなもの...
私が何かをしようとすると
paste("orca",i,sep="")=list_name[[i]]
このエラーが出ます
target of assignment expands to non-language object
これを回避する別の方法はありますか?
その場で新しい変数名を作成することは可能ですか?
リストからデータフレームを読み取り、最後に数字が付いた新しい変数に入れたいのですが。orca1、orca2、orca3のようなもの...
私が何かをしようとすると
paste("orca",i,sep="")=list_name[[i]]
このエラーが出ます
target of assignment expands to non-language object
これを回避する別の方法はありますか?
回答:
使用assign
:
assign(paste("orca", i, sep = ""), list_name[[i]])
paste0
なんですか?
それはあなたがリストを持つ方が良いのではなく使用したかもしれないと私には思えるorca1
、orca2
など、...それは次のようになりorca[1]
、orca[2]
...
通常は、数値のみで区別される変数のリストを作成します。これは、その数値が後で変数にアクセスするための便利な方法になるためです。
orca <- list()
orca[1] <- "Hi"
orca[2] <- 59
それ以外の場合は、assign
まさにあなたが欲しいものです。
データフレームを作成しないでください。リストを保持し、その要素に名前を付けますが、アタッチしません。
これの最大の理由は、外出先で変数を作成する場合、ほとんどの場合、後で有用な何かを実行するためにそれらのそれぞれを反復する必要があることです。そこで、あなたは再びあなたがその場で作成した名前のそれぞれを繰り返すことを強いられます。
リストの要素に名前を付けて、名前を繰り返し処理する方がはるかに簡単です。
attachに関する限り、Rでのプログラミングは非常に悪いため、注意しないと多くの問題が発生する可能性があります。
あなたが持っている場合
varname <- c("a", "b", "d")
できるよ
get(varname[1]) + 2
ために
a + 2
または
assign(varname[1], 2 + 2)
ために
a <- 2 + 2
したがって、変数(連結など)を使用する式を評価する場合はGETを使用し、事前宣言された変数に値を割り当てる場合はASSIGNを使用するように見えます。
割り当ての構文: assign(x、value)
x:文字列として与えられる変数名。強制は行われず、長さが1より大きい文字ベクトルの最初の要素が使用され、警告が出されます。
value: xに割り当てられる値。
別のトリッキーな解決策は、リストの要素に名前を付けるattach
ことです。
list_name = list(
head(iris),
head(swiss),
head(airquality)
)
names(list_name) <- paste("orca", seq_along(list_name), sep="")
attach(list_name)
orca1
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# 1 5.1 3.5 1.4 0.2 setosa
# 2 4.9 3.0 1.4 0.2 setosa
# 3 4.7 3.2 1.3 0.2 setosa
# 4 4.6 3.1 1.5 0.2 setosa
# 5 5.0 3.6 1.4 0.2 setosa
# 6 5.4 3.9 1.7 0.4 setosa
attach
あなたが通常間違った質問をしているなら...