将行追加到R中的现有数据框

时间:2020-05-26 04:07:08

标签: r

我正在使用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)
}

但是我收到一个错误消息,指出“无效的因子水平”。我不确定为什么。

1 个答案:

答案 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)