R和dplyr:如何对外部数据帧使用ifelse条件

R和dplyr:如何对外部数据帧使用ifelse条件,r,dataframe,apache-spark,dplyr,R,Dataframe,Apache Spark,Dplyr,我使用dplyr和spark通过mutate命令创建一个新变量。如果变量my_data_变量的值位于另一个数据帧other_df$one_列的列内,则此新变量new_变量是分类变量,必须是ALFA。因此,如果其值为 它不包括在值中​​属于other_df$one_列 我所做的一个例子: my_data %>% mutate(new_variable = ifelse(my_data_variable == other_df$one_column, "ALFA","BETA"))

我使用dplyr和spark通过mutate命令创建一个新变量。如果变量
my_data_变量
的值位于另一个数据帧
other_df$one_列
的列内,则此新变量
new_变量
是分类变量,必须是
ALFA
。因此,如果其值为 它不包括在值中​​属于
other_df$one_列

我所做的一个例子:

my_data %>%
     mutate(new_variable = ifelse(my_data_variable == other_df$one_column, "ALFA","BETA"))
但不幸的是我犯了这个错误。甚至使用
!!其他_-df$one_列
本地(其他_-df[['one_列]]])
而不是
other_df$one_列
不起作用

Error: Cannot embed a data frame in a SQL query.

If you are seeing this error in code that used to work, the most likely cause is a change dbplyr 1.4.0. Previously `df$x` or
`df[[y]]` implied that `df` was a local variable, but now you must make that explict with `!!` or `local()`, e.g., `!!df$x` or
`local(df[["y"]))

有没有替代ifelse函数的方法来获得预期结果?

感谢@Ronaksah的帮助。解决方案如下:

my_data %>% 
     mutate(new_variable = ifelse(my_data_variable %in% !!other_df$one_column, "ALFA","BETA")) 

不确定这是否适用于spark,但如果您在
其他_df$one_列中有多个值
您可能应该使用
我的_数据%>%mutate(new_variable=ifelse(my_data_variable%在%other_df$one_列中,“ALFA”,“BETA”)
@RonakShah多亏了您的帮助,我现在找到了解决方案。解决方案是:my_data%>%mutate(new_variable=ifelse(my_data_variable%in%!!其他_df$one_列,“ALFA”,“BETA”))太棒了!您可能应该将其添加为答案。@PabloPicciau,只需将您的解决方案添加到下面的
您的答案
区域,然后您就可以验证它;)