#r
#r
Вопрос:
В настоящее время я написал функцию, в которой я индивидуально просматриваю несколько дескрипторов Twitter и присваиваю объекту имена в зависимости от фамилии этого пользователя Twitter. Например:
f <- function() {
dougjones <- rtweet::get_timeline('@SenDougJones', n = 50, max_id = NULL, home = FALSE, parse = TRUE, check = FALSE, token = token, include_rts = FALSE)
bennet <- rtweet::get_timeline('@SenatorBennet', n = 50, max_id = NULL, home = FALSE, parse = TRUE, check = FALSE, token = token, include_rts = FALSE)
blumenthal <- rtweet::get_timeline('@SenBlumenthal', n = 50, max_id = NULL, home = FALSE, parse = TRUE, check = FALSE, token = token, include_rts = FALSE)
}
Я хочу упростить это, создав список фамилий пользователей и их дескрипторов Twitter, чтобы создать некоторый код, который выглядел бы так (если код работал правильно)
list <- list(
handles(handle =
tibble(c('@SenDougJones','@SenatorBennet','@SenBlumenthal')),
names(name = tibble(c('Jones','Bennet','Blumenthal')))
f <- function(list){
for(i in seq_along(list$handles)){
for(j in seq_along(list$names)){
names[[j]] <- rtweet::get_timelines(list$handles[[i]],n=50,max_id=NULL,home=FALSE,parse=TRUE, check = FALSE, token = token,include_rts=FALSE) }}}
Я знаю, что этот код неверен, потому что при его запуске я получаю NULL. Мне было интересно, как бы я это сделал. По сути, то, что я надеюсь сделать, это итеративно передавать дескрипторы Twitter через функцию get_timeline(), а также называть объекты из каждой итерации на основе фамилии пользователя. Имя пользователя.
Я несколько новичок в использовании циклов, поэтому понятия не имею, является ли это проблемой синтаксиса или чем-то еще, но я надеялся, что у всех вас могут быть предложения. Что я должен сделать, чтобы получить этот результат?
Ответ №1:
Я не знаю, что именно вы ищете, но следующее должно сработать.
last.names <- c('Jones','Bennet','Blumenthal')
twitter.handles <- c('@SenDougJones','@SenatorBennet','@SenBlumenthal')
my.list <- list(last.names = last.names,
twitter.handles = twitter.handles,
indexes = seq_along(last.names))
my.list$twitter.timeline <- lapply(my.list$indexes,
FUN = function(index) {
print(paste(my.list$last.names[[index]], my.list$twitter.handles[[index]], sep = ";"))
twitter.timeline <- rtweet::get_timelines(my.list$twitter.handles[[index]],
n=50,
max_id=NULL,
home=FALSE,
parse=TRUE,
check = FALSE,
token = token,
include_rts=FALSE)
return(twitter.timeline)
})
HTH!
Комментарии:
1. Похоже, что это делает то, что я бы хотел: я получаю следующую ошибку, выполняя этот код: Ошибка во время обертывания: предоставлено больше элементов, чем нужно для замены Ошибка: больше не доступны обработчики ошибок (рекурсивные ошибки?); вызов ‘прервать’ перезапуск
2. Я обновил код в своем ответе. Пожалуйста, посмотрите. Ошибка была вызвана тем, что я попытался заменить один элемент (целое число, последовательность) несколькими элементами (что и возвращает get_timelines).