【发布时间】:2023-03-13 15:33:01
【问题描述】:
我正在编写一个函数,它应该根据输入向量的长度以两种不同的方式过滤数据!
library(dplyr)
DF = function(country = c("Belgium", "USA", "India")) {
operator = ifelse(length(country) == 1, "|" , "&")
some_data = data %>%
filter(Actor1CountryCode %in% country & Actor2CountryCode %in% country)
return( some_data )
}
但如果我只选择country = "Germany",我希望运算符从“&”切换到“|”。
运算符应该以某种方式成为最终过滤器功能的一部分。我的“真实”过滤功能非常大,所以我只想使用一个过滤功能。 有人知道如何编写智能函数吗?
解决方案(如果您想复制):
library(dplyr)
data = data.frame(
Actor1CountryCode = c("Belgium", "USA", "India", "Pakistan", "Germany"),
Actor2CountryCode = c("Belgium", "USA", "India", "Germany", "Russia") ,
sentiment = c( 1,2,3,4,5 ) )
DF <- function(country) {
operator <- if (length(country) == 1) `|` else `&`
some_data = data %>%
filter(operator(Actor1CountryCode %in% country, Actor2CountryCode %in% country))
return(some_data)
}
DF(c("Belgium", "USA", "India"))
DF("Germany")
【问题讨论】:
标签: r function dplyr operators filtering