【发布时间】:2021-07-21 21:09:27
【问题描述】:
我想从我的数据集中过滤特定的行,并且我想定义在过滤器函数之前的行,但是每当我这样做时,我都会得到 0 个观察结果。
我想这样做(这不起作用,因为我得到 0 个观察结果):
name <- "my_dna_42_x"
gene <- "my_gene_12213"
df2 <- df1 %>% group_by(DNA, ID) %>% filter(any(DNA == name && ID == gene))
但这确实有效(但我不希望这样做,因为我希望能够在运行之前定义名称和基因(并稍后将其变为函数)):
df2 <- df1 %>% group_by(DNA, ID) %>% filter(any(DNA == "my_dna_42_x" && ID == "my_gene_12213"))
那么如何让过滤器函数在之前定义名称时接受名称或 ID?
(我也尝试过parse_expr(paste(name)),但效果不佳,我将名称定义为符号,然后像这样:name <- sym("my_dna_42_x"))
已解决:名称已经是列名
带有示例数据的问题:
set.seed(42)
n <- 6
dat <- data.frame(id=1:n,
date=seq.Date(as.Date("2020-12-26"), as.Date("2020-12-31"), "day"),
group=rep(LETTERS[1:2], n/2),
age=sample(18:30, n, replace=TRUE),
type=factor(paste("type", 1:n)),
x=rnorm(n))
my_type <- "type 1"
filtered_dat <- dat %>% group_by(id, type) %>% filter(type == "my_type")
我在定义 my_type(最后 2 行)并再次调用它时遇到问题。
【问题讨论】:
-
矢量化!使用
&而不是&&。 -
请阅读stackoverflow.com/q/6558921/3358272(和stackoverflow.com/q/16027840/3358272),这很可能是矢量化逻辑条件的问题。 (除此之外,没有样本数据我们无能为力,请阅读stackoverflow.com/q/5963269、minimal reproducible example 和stackoverflow.com/tags/r/info,了解如何使问题可重现。)