2017-01-26 5 views
0

Я изучаю динамические имена, используя цикл for в R. Чтобы применить, я хотел бы извлечь некоторые столбцы (такие же имена: имя, поп) динамических таблиц (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") и не от реального объекта. Также невозможно выбрать столбцы из строки, поскольку строка не имеет двух измерений.

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")]')))}