首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R循环函数,用于选择多个对象中的元素

R循环函数,用于选择多个对象中的元素
EN

Stack Overflow用户
提问于 2020-04-21 03:00:30
回答 1查看 367关注 0票数 2

我使用谷歌趋势R软件包执行几个关键字查询,如下所示:

代码语言:javascript
复制
trends1 <- gtrends(keyword="compare", gprop=channel,geo="AU", time=time, category=249)
trends2 <- gtrends(keyword="switch", gprop=channel,geo="AU", time=time, category=249)
trends3 <- gtrends(keyword="change", gprop=channel,geo="AU", time=time, category=249)

我只对一段时间后的结果感兴趣,所以我把它们挑出来:

代码语言:javascript
复制
time_trend1 <- trends1$interest_over_time
time_trend2 <- trends2$interest_over_time
time_trend3 <- trends3$interest_over_time

但是我有其中的60条(还有更多的)。我想写一个重复循环(我想):

代码语言:javascript
复制
#select only interest over time
x <- 0
repeat {
time_trend(x+1) <- trends(x+1)$interest_over_time
if (x == 61){break}
}

但是我得到了错误:趋势中的错误(x+ 1):找不到函数“趋势”

我遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-21 03:14:18

您可以使用ls + mget在列表中获取数据,使用lapply对每个列表进行迭代,并获取每个列表的"interest_over_time"元素。

代码语言:javascript
复制
total_list <- lapply(mget(ls(pattern = 'trends\\d+')), `[[`, "interest_over_time")

total_list会给出数据格式的列表。最好将数据保存在列表中,因为它更容易管理,并且不会使环境中的许多对象杂乱无章。但是,如果您想要分别为每个数据,我们可以使用list2env

代码语言:javascript
复制
list2env(total_list, .GlobalEnv)

要删除某些列,我们可以:

代码语言:javascript
复制
total_list <- lapply(mget(ls(pattern = 'trends\\d+')), function(x) {
         data <- x$interest_over_time
         data[setdiff(names(data), c("geo","category","time"))]
})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61335264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档