我正在使用twitteR包提取Twitter数据并将其存储在数据框x中。
我首先创建了数据框。
x <- data.frame(
name = character(),
screen_name = character(),
id = integer(),
description = character(),
statuses_count = integer(),
followersCount = integer(),
favoritesCount = integer(),
friendsCount = integer(),
url = character(),
created = integer(),
verified = integer(),
profile_image_url = character(),
stringsAsFactors=FALSE
)
然后创建一个函数以返回特定用户的数据
adduserdata <- function(username = ""){
user <- getUser(username)
userdata = c(name = user$name,
screen_name = user$screenName,
id = user$id,
description = user$description,
statuses_count = user$statusesCount,
followersCount = user$followersCount,
favoritesCount = user$favoritesCount,
friendsCount = user$friendsCount,
url = user$url,
created = user$created,
verified = user$verified,
profile_image_url = user$profileImageUrl)
return(userdata)
}
我现在想获取列表ns中每个用户的数据并将其附加到数据框x
ns <- c("realDonaldTrump","BarackObama")
for (n in ns) {
user <- adduserdata(n)
x <- bind(x, user)
}
但是我收到一个错误消息,指出“无效的因子水平”。我不确定为什么。
答案 0 :(得分:0)
从addUser
函数返回一个数据帧。
adduserdata <- function(username = ""){
user <- getUser(username)
userdata = data.frame(name = user$name,
screen_name = user$screenName,
id = user$id,
description = user$description,
statuses_count = user$statusesCount,
followersCount = user$followersCount,
favoritesCount = user$favoritesCount,
friendsCount = user$friendsCount,
url = user$url,
created = user$created,
verified = user$verified,
profile_image_url = user$profileImageUrl)
return(userdata)
}
然后尝试:
result <- do.call(rbind, lapply(ns, adduserdata))
或
result <- purrr::map_df(ns, adduserdata)