我想通过a = list(range(5)) + [1]
b = list(range(5)) + [1]
c = list(range(5)) + [2]
l = [a, b, c]
list(filter(lambda x: x[-1] == 1, l))
# [[0, 1, 2, 3, 4, 1], [0, 1, 2, 3, 4, 1]]
函数在两个具有相同长度的向量中同时找到多个NA值:
count()
它不起作用。存在以下错误:
library(tidyverse)
list1 <-c(NA,NA,3)
list2 <-c(NA,3,4)
count(is.na(list1) & is.na(list2)) # wanna get TRUE 1 FALSE 2 as one only string contains NA values in both variables
但是,我在学习一本相当不错的书之前就做到了。
Error in UseMethod("groups") :
no applicable method for 'groups' applied to an object of class "logical"
在这里有效。从某种类型的向量到逻辑向量(T或F)的转换似乎是一个问题,但是我无法弄清楚到底是什么。
答案 0 :(得分:2)
您可以使用table()
来建立is.na(list1) & is.na(list2)
中每个逻辑值的计数的列联表:
table(is.na(list1) & is.na(list2))
# FALSE TRUE
# 2 1
答案 1 :(得分:1)
看起来plyr
和dplyr
都具有count()
功能。 plyr
版本基本上说它只是as.data.frame(table(x))
的包装,而dplyr
看起来像是期望tbl()
作为输入。看来dplyr::count()
是您在上面运行的内容。
我只在这里使用table()
,或显式调用plyr::count()
:
library(tidyverse)
list1 <-c(NA,NA,3)
list2 <-c(NA,3,4)
as.data.frame(table(is.na(list1) & is.na(list2)))
#> Var1 Freq
#> 1 FALSE 2
#> 2 TRUE 1
plyr::count(is.na(list1) & is.na(list2))
#> x freq
#> 1 FALSE 2
#> 2 TRUE 1
dplyr::count(is.na(list1) & is.na(list2))
#> Error in UseMethod("groups"): no applicable method for 'groups' applied to an object of class "logical"
由reprex package(v0.2.1)于2019-02-10创建