Есть ли способ автоматизировать извлечение элементов из двух или более списков? - PullRequest
0 голосов
/ 21 апреля 2019

Моя цель - автоматизировать выборку данных трендов вместе с извлечением "interest_over_time" из списков.

Считается, что это двухэтапная задача:

  • Автоматическая выборка данных на основе группы ключевых слов

  • Извлечение элементовавтоматически, методично

Я не могу выполнить шаг 2.

Есть идеи, как это сделать?

Шаг 1 - Автоматизациявыборка данных трендов Google

library(gtrendsR)
a <- c("sony", "apple")

for (i in a) {
  name <- (paste(i, sep=""))
  assign(name, gtrends(keyword=i, time="now 1-H"))
  print(name)
}

Шаг 2 - Извлечение элементов

sony[["interest_over_time"]]

вместо того, чтобы делать это, как описано выше, можно ли использовать для или какую-либо другую функцию для автоматизации этого?

Ответы [ 2 ]

0 голосов
/ 21 апреля 2019

Вот несколько способов, которые, я думаю, дадут вам то, что вы хотите.

library(gtrendsR)

a = c("sony","apple")

Первый способ: с использованием base R

gtrends_interest <- function(keyword) gtrends(keyword = keyword, time = "now 1-H")[["interest_over_time"]]
trends_data <- do.call('rbind', lapply(a, gtrends_interest))

Второй способ: с использованием purrr

library(purrr)
trends_data2 <- a %>%
  map_df( ~ gtrends(keyword = ., time = "now 1-H")[["interest_over_time"]])

Оба метода вернут data.frame с interest_over_time от каждого элемента в a в стеке.

Я предпочитаю второе, так как map() становится очень мощным, когда вы освоите его.

0 голосов
/ 21 апреля 2019

Вы можете читать с sapply.Данные будут сохранены в список l.

library(gtrendsR)
l <- sapply(c("sony", "apple"), function(i) gtrends(keyword=i, time="now 1-H"))

Доступ к данным с помощью l[[1]] и l[[2]].

head(l[[1]])
#                  date hits keyword   geo gprop category
# 1 2019-04-21 09:14:00   74    sony world   web        0
# 2 2019-04-21 09:15:00   72    sony world   web        0
# 3 2019-04-21 09:16:00   75    sony world   web        0
# 4 2019-04-21 09:17:00   84    sony world   web        0
# 5 2019-04-21 09:18:00   78    sony world   web        0
# 6 2019-04-21 09:19:00   83    sony world   web        0

head(l[[2]])
# location hits keyword   geo gprop
# 1 Falkland Islands (Islas Malvinas)   NA    sony world   web
# 2            São Tomé & Príncipe   NA    sony world   web
# 3                        Seychelles   NA    sony world   web
# 4                 St. Kitts & Nevis   NA    sony world   web
# 5                         Hong Kong  100    sony world   web
# 6                             Nepal   84    sony world   web
...