r - 如何从 get_friends 函数返回的 tibbles 列表中删除空的 tibbles?

标签 r list tibble rtweet

我正在使用 rtweet 包的 get_friends 函数来获取一组焦点用户的 friend 的 user_id 列表谁是从 Twitter 话语的参与者中抽样的。该函数返回一个 tibbles 列表。

每个 tibble 有两列 - 一列是焦点用户的 user_id,第二列是焦点用户 friend 的 user_id。由于每个用户的好友数量不同,因此每个小标题中的行数也不同。

我的问题:由于不明原因,一些焦点用户的帐户现在不存在了。因为这个列表有空的 tibbles,看起来像这样:

> userFriends[[88]]
# A tibble: 0 x 0

一个非空的 tibble 看起来像这样:

> userFriends[2]
[[1]]
# A tibble: 32 x 2
                 user            user_id
                <chr>              <chr>
 1 777937999917096960           49510236
 2 777937999917096960           60489018
 3 777937999917096960         3190203961
 4 777937999917096960          118756393
 5 777937999917096960         2338104343
 6 777937999917096960          122453931
 7 777937999917096960          452830010
 8 777937999917096960           60937837
 9 777937999917096960 923106269761851392
10 777937999917096960          416882361
# ... with 22 more rows

我希望我的代码能够识别这些空的 tibbles 并在没有这些 tibbles 的情况下对列表进行子集化。

我在这些 tibbles 上使用了 nrow 函数来查找每个焦点用户拥有的 friend 数量。

nFriends <- as.numeric(lapply(userFriends, nrow))

我将此值为零的索引作为空小标题,并使用子集技术将其删除,如下所示:

nullIndex <- nFriends!=0
userFriendsFinal <- userFriends[nullIndex]

这似乎目前有效。但是通过这种方式,我还删除了 friend 为零的用户(尽管不太可能)以及不再存在或无法通过 API 访问的用户。我想确保只删除那些无法访问或不存在的内容。 请帮忙。

最佳答案

您好,您可以使用 purrr 包中的 discard 函数:

这是一个小例子:

library(purrr)
mylist <- list( a = tibble(n = numeric()),
      b = tibble(n = 1:4))
discard(mylist, function(z) nrow(z) == 0)
$b
# A tibble: 4 x 1
      n
  <int>
1     1
2     2
3     3
4     4

关于r - 如何从 get_friends 函数返回的 tibbles 列表中删除空的 tibbles?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55589554/

相关文章:

r - 使用功能rbind “names do not match previous names”的R中的错误

html - :hover isn't applying full background to li

python - 嵌套列表查询的通配符

r - 有没有一种整洁的方法来改变小标题中的单个细胞?

r - 在向 tibble 添加新列时使用动态命名

javascript - R Shiny-为电缆表添加额外的标题行 'sticky'

r - setNames 后缀到前缀

r - ggplot 百分比乘以 100

python - 如何查找列表中的项目(不使用 "in"方法)?

r - 将 tibble 中的每一行转换为列标题