【发布时间】:2020-08-15 22:54:56
【问题描述】:
给定一个数据框:
v1_attr1 <- c(1,0,0,0,1,0,0,0,1,1) %>% as.integer ()
v1_attr2 <- c(0,1,0,0,1,1,1,1,1,1) %>% as.integer ()
v2_attr1 <- c(0,0,1,0,0,1,1,1,0,0) %>% as.integer ()
v2_attr2 <- c(0,0,0,1,0,1,1,1,0,0) %>% as.integer ()
df <- data.frame (v1_attr1, v1_attr2, v2_attr1, v2_attr2)
如何为每个v[[x]] 的attr 设置过滤器?
我尝试了以下代码来获取每个data.frame 中由attr 过滤的行数。
library(dplyr)
# create list for vs
list_vs <- list ("v1", "v2")
# set multiple attr filter for each v[[x]] to get the respective number of rows in each filtered data.frame (presented in a list)
filtered <- lapply (list_vs, function (x){
df %>% filter (noquote(paste0(list_vs[[x]], "_attr1")) == 1 | noquote(paste0(list_vs[[x]], "_attr2")) == 1) %>%
nrow ()
})
虽然此代码没有返回错误,但filtered[[x]] 的结果始终为 0。如何正确设置过滤器参数以在每个 data.frame 中获得所需的行数?我使用了noquote,因为否则过滤参数将被粘贴在引号中。
【问题讨论】: