根据列表列的内容以编程方式删除行

时间:2019-01-23 00:53:04

标签: r

我有一个带有列表列v2的数据框。

Twilio Chat Push Notification templates

数据源存在一些问题,在此不再赘述。为了解决这个问题(未显示),我想在df中删除行,并在列表列v2中添加4个以上的变量。

df <- structure(list(v1 = c("a", "b", "c"), 
                     v2 = list(
                       structure(
                         list(
                           v3 = c(1:4),
                           v4 = c(1:4), 
                           v5 = c(1:4), 
                           v6 = c(NA, "", NA, "")), 
                         class = "data.frame", row.names = 1:4),
                       structure(
                         list(
                           v3 = c(1:2),
                           v4 = c(1:2), 
                           v5 = c(1:2),
                           v6 = c(1:2),
                           v7 = c(NA, "")),
                         class = "data.frame", row.names = 1:2), 
                       structure(
                         list(
                           v3 = c(1:2),
                           v4 = c(1:2), 
                           v6 = c(NA, "")),
                         class = "data.frame", row.names = 1:2)), 
                     v8 = c(1:3)), 
                row.names = c(NA, 3L), 
                class = "data.frame")

2 个答案:

答案 0 :(得分:2)

您可以使用lengths函数根据条件获取列表长度和子集

df[lengths(df$v2) < 5, ]

#  v1                                           v2 v8
#1  a 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, NA, , NA,   1
#3  c                               1, 2, 1, 2, NA,   3

答案 1 :(得分:1)

仅适用于希望使用Xcode的人:

conda install python=3.6.8

结果:

purrr