【问题标题】:How to remove empty tibbles from a list of tibbles returned by get_friends function?如何从 get_friends 函数返回的小标题列表中删除空小标题?
【发布时间】:2019-04-09 09:33:21
【问题描述】:

我正在使用rtweet 包的get_friends 函数来获取一组焦点用户的朋友user_id 的列表,这些用户是从Twitter 讨论的参与者中抽取的。该函数返回一个小标题列表。

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

我的问题:由于未知原因,一些焦点用户的帐户现在不存在。因此,该列表具有如下所示的空小标题:

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

一个非空的小标题如下所示:

> 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 的情况下对列表进行子集化。

我在这些小标题上使用了nrow 函数来查找每个焦点用户拥有的朋友数量。

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

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

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

到目前为止,这似乎有效。但是通过这种方式,我也删除了零朋友的用户(尽管可能性很小)以及不再存在或通过 API 访问的用户。我想确保我只删除那些无法访问或不存在的人。 请帮忙。

【问题讨论】:

    标签: r list tibble rtweet


    【解决方案1】:

    您好,您可以使用 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
    

    【讨论】:

      【解决方案2】:

      我们可以将Filternrow一起使用,这将删除所有行数为0的条目,即

      Filter(nrow, userFriends)
      

      【讨论】:

        猜你喜欢
        • 2021-12-13
        • 1970-01-01
        • 2015-04-28
        • 2018-09-16
        • 2019-10-04
        • 2021-07-04
        • 1970-01-01
        • 2021-11-30
        • 2019-12-10
        相关资源
        最近更新 更多