2017-01-26 9 views
0

Rのforループを使用して動的名を学習しています。適用するには、動的テーブル(table_CA、table_DC)のいくつかの列(同じ名前:名前、ポップ) 。ここでRデータフレームの動的テーブルの列を選択

は私の試みです:

states <- c("CA", "DC") 
for (state in states) { 
    assign(paste0("final_", state), paste0("table_", state)[,c("Name","Pop")] 
} 

簡単なスクリプトは動作しません。使用

paste0("table_", state)[,c("Name","Pop")] 

は間違っている可能性が、私はそれを修正するかどうかはわかりません。

この問題についてご連絡いただけますか?ありがとうございました!

+0

ありがとう、エティエンヌ・キンズラー、正解です。できます!私はもっ​​と注意を払うべきだった。 – duckduckgoes

答えて

0

あなたはgetを使用する必要があります。

for (state in states) { 
    assign(paste0("final_", state), get(paste0("table_", state))[, c("Name", "Pop")]) 
} 

あなたがpaste0("table_", state))[, c("Name", "Pop")]を使用するときは、(例えば"final_CA"のために呼ばれる)文字からではなく実際のオブジェクトから列を選択するために、を試してみてください。また、文字列に2つの次元がないため、文字列から列を選択することはできません。

0

これはあなたがしたいことだと思います。答えは です。 "名前"と "ポップ"列をすべて新しいテーブル "newtable"に状態 "table_ $ state状態名が状態ごとに変わる名前。

# newtable to get the data out (has the same rows as one of the state tables) 
newtable=data.frame(matrix(NA,nrow(table_CA),0)) 
states <- c("CA", "DC") 
# Create a new column in newtable 
for (state in states){ 
eval(parse(text=paste0('newtable[,ncol(newtable)+1] <- table_', state,'[,c("Name","Pop")]')))} 
関連する問題