R - Использование цикла в списке маркеров Twitter для извлечения твитов и создания нескольких фреймов данных

У меня есть df, состоящий из маркеров Twitter, которые я хочу регулярно просматривать.

df=data.frame(twitter_handles=c("@katyperry","@justinbieber","@Cristiano","@BarackObama"))

Моя методология

Я хотел бы запустить цикл for, который перебирает все дескрипторы в моем df и создает несколько фреймов данных:

1) Используя библиотеку rtweet, я хотел бы собирать твиты, используя search_tweets функция.

2) Затем я хотел бы объединить новые твиты с существующими твитами для каждого кадра данных, а затем использовать функцию unique для удаления любые дубликаты твитов.

3) Для каждого фрейма данных я хотел бы добавить столбец с именем дескриптора Twitter, используемого для получения данных. Например: для базы данных твитов, полученных с помощью дескриптора @BarackObama, я бы хотел дополнительный столбец с именем Source с дескриптором @BarackObama .

4) Если API возвращает 0 твитов, я бы хотел, чтобы шаг 2) был проигнорирован. Очень часто, когда API возвращает 0 твитов, я получаю сообщение об ошибке при попытке объединить пустой фрейм данных с существующим.

5) Наконец, я хотел бы сохранить результаты каждого скрапа в разные объекты фрейма данных. Имя каждого объекта dataframe будет его дескриптором Twitter, в нижнем регистре и без @

Мой желаемый результат

Мой желаемый вывод будет 4 кадра данных, katyperry, justinbieber, cristiano & barackobama

Моя попытка

library(rtweet)
library(ROAuth)

#Accessing Twitter API using my Twitter credentials

key <-"yKxxxxxxxxxxxxxxxxxxxxxxx"
secret <-"78EUxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
setup_twitter_oauth(key,secret)

#Dataframe of Twitter handles    
df=data.frame(twitter_handles=c("@katyperry","@justinbieber","@Cristiano","@BarackObama"))

# Setting up the query
query <- as.character(df$twitter_handles)
query <- unlist(strsplit(query,","))
tweets.dataframe = list()

# Loop through the twitter handles & store the results as individual dataframes
for(i in 1:length(query)){
  result<-search_tweets(query[i],n=10000,include_rts = FALSE)
  #Strip tweets that  contain RTs
  tweets.dataframe <- c(tweets.dataframe,result)
  tweets.dataframe <- unique(tweets.dataframe)
}

Однако я не смог выяснить, как включить в цикл for часть, которая игнорирует этап конкатенации, если API возвращает 0 твитов для данного дескриптора.

Кроме того, мой цикл for не возвращает 4 кадра данных в моей среде, но сохраняет результаты в виде Large list

Я обнаружил сообщение , которое решает проблему, очень похожую на ту, с которой я сталкиваюсь, но мне трудно адаптироваться к моему вопросу.

Ваш вклад будет принят с благодарностью.

Изменить: Я добавил Шаг 3) в Мою методологию, если вы тоже можете помочь с этим.

4 голоса | спросил Varun 24 AMpTue, 24 Apr 2018 11:11:08 +030011Tuesday 2018, 11:11:08

1 ответ


0
в ответ на ответ ...
ответил CJ Yetman 24 PMpTue, 24 Apr 2018 12:21:40 +030021Tuesday 2018, 12:21:40

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132