私はRが新しく、ループのインデックスが変数名に追加されるforループ内のベクトルを参照する変数を作成しようとしています。しかし、以下のコードでは、新しいベクトルを大きなデータフレームの適切な場所に挿入しようとしていますが、動作していません。また、get()、as.vector()、eval )等をデータフレーム構築関数に格納する。Rのベクトルに変数名を動的に割り当てますか?
num_incorrect.8とnum_incorrect.9を値0のベクトルにしてからmytableに挿入します。私は列の挿入を行ったかを見てみると
cols_to_update <- c(8,9)
for (i in cols_to_update)
{
#column name of insertion point
insertion_point <- paste("num_correct",".",i,sep="")
#create the num_incorrect col -- as a vector of 0s
assign(paste("num_incorrect",".",i,sep=""), c(0))
#index of insertion point
thespot <- which(names(mytable)==insertion_point)
#insert the num_incorrect vector and rebuild mytable
mytable <- data.frame(mytable[1:thespot], as.vector(paste("num_incorrect",".",i,sep="")), mytable[(thespot+1):ncol(mytable)])
#update values
mytable[paste("num_incorrect",".",i,sep="")] <- mytable[paste("num_tries",".",i,sep="")] - mytable[paste("num_correct",".",i,sep="")]
}
、それは次のようになります。それはリテラルテキストとして私の命令を取っているよう
[626] "num_correct.8"
[627] "as.vector.paste..num_incorrect........i..sep........2"
...
[734] "num_correct.9"
[735] "as.vector.paste..num_incorrect........i..sep........3"
基本的には、それが見えます。コードの最後の行が(行以来、それは適切な場所に列を挿入していない前に)期待どおりに動作し、データフレームの最後に新しい列を作成します。
[1224] "num_incorrect.8"
[1225] "num_incorrect.9"
私は外の一種の午前アイデアなので、誰かが私に何が間違っているのか説明してください、なぜそれを修正するのか、私はそれを感謝します。ありがとう!
私はあなたを正しく理解しているかどうかわかりません。あなたの 'mytable'を表す小さな再現可能な例を共有できますか? –