5

在 SQL 中,如果您使用 IN 查找特定变量(列)的多个值,则可以轻松避免多个 OR 条件。例如 :

SELECT * FROM colors WHERE color in ('Red', 'Blue', 'Green')

我将如何在 R 中做到这一点?我目前不得不这样做:

shortlisted_colors <- subset(colors, color == 'Red' | color == 'Blue' | color == 'Green')

有什么更好的方法?

4

2 回答 2

11
shortlisted_colors <- subset(colors, color %in% c('Red', 'Blue', 'Green'))
于 2014-07-17T19:21:24.430 回答
2

我想可能很难搜索“in”,但答案是“%in%”。搜索也可能很困难,因为in它是 R 中的保留字,因为它在for-loops 的迭代器规范中使用:

subset(colors, color %in% c('Red' ,'Blue','Green') )

看:

?match
?'%in%'   # since you need to quote names with special symbols in them

该页面上说明了使用“%”符号将用户定义的中缀函数名称括起来,但随后您将了解@hadley 如何在他的-package 中将该方法提升到更高水平dplyr。如果您在 SQL 方面有扎实的背景,那么返回查看 dplyr 提供的内容应该会非常令人满意。我知道dplyr-functions 在许多情况下实际上是 SQL 操作的前端。

于 2014-07-17T19:22:31.833 回答