选择R数据帧的动态表的列

时间:2017-01-26 15:19:47

标签: r for-loop dynamic

我正在使用R中的for循环学习动态名称。要应用,我想提取动态表(table_CA,table_DC)的一些列(相同名称:Name,Pop)。

这是我的尝试:

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

简单的脚本不起作用。

使用:

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

可能是错的,但我不确定如何解决它。

你能就这个问题告诉我吗?谢谢!

2 个答案:

答案 0 :(得分: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"中选择列,而不是从实际对象中选择。也不可能从字符串中选择列,因为字符串没有两个维度。

答案 1 :(得分:0)

我想这就是你想要做的......所以这就是答案 我正在移动所有的名字&#34;和#34; Pop&#34;列到新表&#34; newtable&#34;来自不同的表与州&#34; table_ $ state&#34;状态名称从州到州的名称。

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