R 垂直计算列表中某个条件的出现次数,并将结果存储在列表中?
假设我有一个数据框,其中包含给定测试的三种状态及其结果,存储为列表:R 垂直计算列表中某个条件的出现次数,并将结果存储在列表中?,r,dplyr,R,Dplyr,假设我有一个数据框,其中包含给定测试的三种状态及其结果,存储为列表: list1 <- list(c(-40, 22, 10)) list2 <- list(c(-1, 18, -39)) list3 <- list(c(22, -5, 2)) dat <- data.frame(State = c("Iowa", "Wisconsin", "Ohio")) dat$Tests <- c(list1, l
list1 <- list(c(-40, 22, 10))
list2 <- list(c(-1, 18, -39))
list3 <- list(c(22, -5, 2))
dat <- data.frame(State = c("Iowa", "Wisconsin", "Ohio"))
dat$Tests <- c(list1, list2, list3)
list1您可以创建一个由Tests
组成的矩阵,并使用colSums
计算每列中的负值数量
colSums(do.call(rbind, dat$Tests) < 0)
#[1] 2 1 1
您可以创建一个由测试
组成的矩阵,并使用列和
计算每列中的负值数量
colSums(do.call(rbind, dat$Tests) < 0)
#[1] 2 1 1
我们可以使用tidyverse
方法
library(dplyr)
library(purrr)
dat %>%
mutate(Results = map(Tests, `<`, 0) %>%
reduce(`+`))
# State Tests Results
#1 Iowa -40, 22, 10 2
#2 Wisconsin -1, 18, -39 1
#3 Ohio 22, -5, 2 1
我们可以使用tidyverse
方法
library(dplyr)
library(purrr)
dat %>%
mutate(Results = map(Tests, `<`, 0) %>%
reduce(`+`))
# State Tests Results
#1 Iowa -40, 22, 10 2
#2 Wisconsin -1, 18, -39 1
#3 Ohio 22, -5, 2 1
Ronak,如果列表未命名且具有默认值[[1]]、[[2]]?对于bind_rows
您需要先将其转换为dataframe/tibble。这很好,谢谢@Ronaksha!问题:如何将其插入dplyr
管道链?例如:sum\u results%rowSums(dplyr::bind\u cols(Tests)<0)%%>%other\u stuff\u使用\u dplyr
@RonakShah Nevermind,我找到了如何使其工作的方法。再次感谢。Ronak,如果列表未命名且具有默认值[[1]]、[[2]],则无法绑定行。对于bind_行
,您需要先将其转换为dataframe/tibble。这很好,谢谢@Ronaksha!问题:如何将其插入dplyr
管道链?例如:sum\u results%rowSums(dplyr::bind\u cols(Tests)<0)%%>%other\u stuff\u使用\u dplyr
@RonakShah Nevermind,我找到了如何使其工作的方法。再次感谢。
dat$Results <- Reduce(`+`, lapply(dat$Tests, `<`, 0))
dat$Results
#[1] 2 1 1