2017-11-06 23 views
2

これはおそらく簡単な修正です!私は私のベクトルのi番目の位置をデータフレームの列名に配置しようとしています。私はi番目の番号を入力するためにpaste0を使用しようとしています。i番目のベクトル番号をデータフレームの列名に挿入 - R

sma <- 2:20 
> sma 
[1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 

# Place i number from sma vector to data frame column name 
spx.sma <- df$close.sma.paste0("n", sma[i]) 

列名は次のようになります。

"close.sma.n2" 

を私は

paste0("n", sma[i]) 

を印刷する場合、私は得る:

> paste0("n", sma[i]) 
[1] "n2" 

だから、本当に私は私のデータフレームの列にこれを貼り付ける場合名前を次に読み取る必要があります:

close.sma.n2 

これを行う正しい方法は何ですか?

私はエラーを達成:

> spx.sma <- df$close.sma.paste0(".n", sma[i]) 
Error: attempt to apply non-function 
+2

あなたはこの形式ではなく、 '$'バージョン... 'DF [、paste0( "close.sma.n"、SMA [I]を)]'を使用する必要があります –

答えて

2

あなたはリストとしてのデータフレームを扱う必要があります。だから、 "$"演算子を避け、代わりに[[]]を使います。

ので:

spx.sma <- df[[paste0("close.sma.n", sma[i])]] 
関連する問題