在R中循环替换变量名

时间:2017-11-28 22:59:57

标签: r loops variables

有没有办法在循环中自动执行以下操作?而不是全部手写:

hour_1 <- aggregate(hour_1$freq, by=list(country=hour_1$country), FUN=sum)

hour_2 <- aggregate(hour_2$freq, by=list(country=hour_2$country), FUN=sum) 

hour_3 <- aggregate(hour_3$freq, by=list(country=hour_3$country), FUN=sum) 


hour_4 <- aggregate(hour_4$freq, by=list(country=hour_4$country), FUN=sum) 

hour_5 <- aggregate(hour_5$freq, by=list(country=hour_5$country), FUN=sum) 

hour_6 <- aggregate(hour_6$freq, by=list(country=hour_6$country), FUN=sum) 

hour_7 <- aggregate(hour_7$freq, by=list(country=hour_7$country), FUN=sum) 

hour_8 <- aggregate(hour_8$freq, by=list(country=hour_8$country), FUN=sum) 

hour_9 <- aggregate(hour_9$freq, by=list(country=hour_9$country), FUN=sum) 

hour_10 <- aggregate(hour_10$freq, by=list(country=hour_10$country), 
FUN=sum) 

我希望smth像一个自动占用小时数的for循环。

Thx:)

1 个答案:

答案 0 :(得分:2)

是的,但最好的方法是使用列表和lapplysapply函数代替循环。

hour.in <- mget( paste0('hour_', 1:10) )
hour.out <- lapply( hour.in, function(x) aggregate(x$freq, 
    by=list(country=x$country), FUN=sum) )
names(hour.out) <- paste0('hour_', 1:10)

现在所有结果都在hour.out中,可以单独访问,也可以使用lapplysapply进一步处理。