Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
根据.R中的条件更改筛选中的运算符_R_Function_Dplyr_Operators_Filtering - Fatal编程技术网

根据.R中的条件更改筛选中的运算符

根据.R中的条件更改筛选中的运算符,r,function,dplyr,operators,filtering,R,Function,Dplyr,Operators,Filtering,我正在写一个函数,它应该根据输入向量的长度以两种不同的方式过滤数据 library(dplyr) DF = function(country = c("Belgium", "USA", "India")) { operator = ifelse(length(country) == 1, "|" , "&") some_data = data %>%

我正在写一个函数,它应该根据输入向量的长度以两种不同的方式过滤数据

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 only,我希望操作员从&to |切换

操作符应该是最终过滤器函数的一部分。我的真实过滤函数非常大,所以我只想使用一个过滤函数。 有人知道如何编写智能函数吗

如果要复制,请执行以下操作:

您可以根据国家/地区的长度应用不同的过滤功能:

您可以使用``将|运算符用作函数:

`|`(TRUE, FALSE)
[1] TRUE
因此,这里有一个可能的解决方案:

DF <- function(country) {
  
   operator <- if (length(country) == 1)  `|` else  `&`
   
   some_data =  data %>% 
     filter(operator(Actor1CountryCode %in% country, Actor2CountryCode %in% country)) 
 }
 

DF(c("Belgium", "USA", "India"))
DF("Germany")  
`|`(TRUE, FALSE)
[1] TRUE
DF <- function(country) {
  
   operator <- if (length(country) == 1)  `|` else  `&`
   
   some_data =  data %>% 
     filter(operator(Actor1CountryCode %in% country, Actor2CountryCode %in% country)) 
 }
 

DF(c("Belgium", "USA", "India"))
DF("Germany")