如何从 get_friends 函数返回的小标题列表中删除空小标题?
How to remove empty tibbles from a list of tibbles returned by get_friends function?
我正在使用 rtweet
包的 get_friends
函数来获取一组焦点用户的朋友列表 user_id
,这些焦点用户是从参与者中抽取的推特话语。函数 returns tibbles 列表。
每个 tibble 有两列 - 一列是焦点用户的 user_id
,第二列是焦点用户的 user_id
朋友。由于每个用户的好友数量不同,所以每个tibble中的行数不同。
我的问题:部分重点用户的账号现在non-existent不明原因。因此,列表中有空小标题,如下所示:
> userFriends[[88]]
# A tibble: 0 x 0
一个 non-empty 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
函数来查找每个焦点用户拥有的朋友数量。
nFriends <- as.numeric(lapply(userFriends, nrow))
我将此值为零的索引作为空小标题,并使用子集技术将其删除,如下所示:
nullIndex <- nFriends!=0
userFriendsFinal <- userFriends[nullIndex]
这似乎现在有效。但是通过这种方式,我还删除了朋友为零的用户(尽管不太可能)以及不再存在或无法通过 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
我们可以使用 Filter
和 nrow
,这将删除所有行数为 0 的条目,即
Filter(nrow, userFriends)
我正在使用 rtweet
包的 get_friends
函数来获取一组焦点用户的朋友列表 user_id
,这些焦点用户是从参与者中抽取的推特话语。函数 returns tibbles 列表。
每个 tibble 有两列 - 一列是焦点用户的 user_id
,第二列是焦点用户的 user_id
朋友。由于每个用户的好友数量不同,所以每个tibble中的行数不同。
我的问题:部分重点用户的账号现在non-existent不明原因。因此,列表中有空小标题,如下所示:
> userFriends[[88]]
# A tibble: 0 x 0
一个 non-empty 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
函数来查找每个焦点用户拥有的朋友数量。
nFriends <- as.numeric(lapply(userFriends, nrow))
我将此值为零的索引作为空小标题,并使用子集技术将其删除,如下所示:
nullIndex <- nFriends!=0
userFriendsFinal <- userFriends[nullIndex]
这似乎现在有效。但是通过这种方式,我还删除了朋友为零的用户(尽管不太可能)以及不再存在或无法通过 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
我们可以使用 Filter
和 nrow
,这将删除所有行数为 0 的条目,即
Filter(nrow, userFriends)