gpt4 book ai didi

r - 如何使用字符向量过滤数据框

转载 作者:行者123 更新时间:2023-12-04 11:32:24 25 4
gpt4 key购买 nike

我正在尝试使用 filter() 过滤 data.frame包中的函数 dplyr .这里的主要问题是我想对条件使用向量。

例如

library(dplyr)
conditions <- c("Sepal.Width<3.2","Species==setosa")
DATA <- iris %>%
filter(conditions) #This doesnt work, of course.


有什么功能需要
conditions <- c("Sepal.Width<3.2","Species==setosa")

作为输入并给我
Sepal.Width<3.2 & Species==setosa

作为输出?我想使用 eval(parse...)sapply也许 paste0()添加 & ,但不能让它工作。

任何帮助将不胜感激。

最佳答案

有多个问题。首先,您需要为第二个条件引用内引号:

conditions <- c("Sepal.Width < 3.2", "Species == 'setosa'")

然后,您需要指定两个条件之间的关联。在这里,我假设一个 & .那么你可以使用 eval(parse(...)) :
iris %>%
filter(eval(parse(text = paste(conditions, sep = "&"))))

Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
7 4.6 3.4 1.4 0.3 setosa
8 5.0 3.4 1.5 0.2 setosa
9 4.4 2.9 1.4 0.2 setosa
10 4.9 3.1 1.5 0.1 setosa

另一方面,我认为引用 @Martin Mächler 总是很重要的。警告与此方法相关的潜在问题:

The (possibly) only connection is via parse(text = ....) and all good R programmers should know that this is rarely an efficient or safe means to construct expressions (or calls). Rather learn more about substitute(), quote(), and possibly the power of using do.call(substitute, ......).

关于r - 如何使用字符向量过滤数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58640343/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com