R 不稳定行为时的情况

R 不稳定行为时的情况,r,dplyr,conditional-statements,case-when,R,Dplyr,Conditional Statements,Case When,我试图在一个变种中运行一个case_,并得到以下错误 Error in eval_tidy(pair$lhs, env = default_env) 或 或 我的代码如下: df %>% dplyr::mutate(modelo = dplyr::case_when( modelo == "Onix (2013)" ~ "CHEVROLET Onix (2013)", modelo == "Chevrolet Cruze (2013)" ~ "C

我试图在一个变种中运行一个case_,并得到以下错误

Error in eval_tidy(pair$lhs, env = default_env)

我的代码如下:

df %>% 
    dplyr::mutate(modelo = dplyr::case_when(
        modelo == "Onix (2013)" ~ "CHEVROLET Onix (2013)",
        modelo == "Chevrolet Cruze (2013)" ~ "CHEVROLET Cruze (2013)",
        TRUE ~ modelo)) %>%
    dplyr::mutate(modelo_alternativo = dplyr::case_when(
        modelo_alternativo == "Chevrolet Onix (2013)" ~ "CHEVROLET Onix (2013)",
        modelo_alternativo == "Chevrolet Cruze (2013)" ~ "CHEVROLET Cruze (2013)",
        modelo_alternativo == "Chevrolet Prisma (2013)" ~ "CHEVROLET Prisma (2013)",
        TRUE ~ modelo_alternativo))
有时我把它改成这个,它运行正常:

df %>% 
    dplyr::mutate(modelo = dplyr::case_when(
        modelo == "Onix (2013)" ~ "CHEVROLET Onix (2013)",
        modelo == "Chevrolet Cruze (2013)" ~ "CHEVROLET Cruze (2013)",
        TRUE ~ modelo)
    ) %>%
    dplyr::mutate(modelo_alternativo = dplyr::case_when(
        modelo_alternativo == "Chevrolet Onix (2013)" ~ "CHEVROLET Onix (2013)",
        modelo_alternativo == "Chevrolet Cruze (2013)" ~ "CHEVROLET Cruze (2013)",
        modelo_alternativo == "Chevrolet Prisma (2013)" ~ "CHEVROLET Prisma (2013)",
        TRUE ~ modelo_alternativo)
    )
我检查了语法1000次,列类还可以,并阅读了关于case_when()问题的答案。我需要它来稳定地工作,并且真正知道如何编写这些替换代码,而不会有被卡住的风险

你知道这里发生了什么事吗

我加载的包是:

library(lubridate)
library(tidyverse)
library(foreign)
library(here)
library(dplyr)
reprex的数据:

df <- structure(list(modelo = c("CHEVROLET Sonic (2012)", "CHEVROLET Sonic (2012)", 
                          "CHEVROLET S10 (2012)", "CHEVROLET Sonic (2012)", "CHEVROLET Classic (2010)", 
                          "CHEVROLET Sonic (2012)", "CHEVROLET S10 (2012)", "CHEVROLET S10 (2012)", 
                          "CHEVROLET S10 (2012)", "Chevrolet Prisma (2013)", "Chevrolet Prisma (2013)", 
                          "Chevrolet Prisma (2013)", "Chevrolet Prisma (2013)", "Chevrolet Prisma (2013)", 
                          "Chevrolet Prisma (2013)", "Chevrolet Prisma (2013)", "Chevrolet Prisma (2013)", 
                          "Chevrolet Prisma (2013)", "CHEVROLET S10 (2012)", "Onix (2013)"
), modelo_alternativo = c("VOLKSWAGEN Suran (2015)", "TOYOTA Corolla (2014)", 
                          "TOYOTA Hilux (ARG 2012)", "TOYOTA Corolla (2014)", "VOLKSWAGEN Gol Trend (2012)", 
                          "RENAULT Sandero Stepway (2015)", "FORD Ranger (2012)", "RENAULT FLUENCE (2015)", 
                          "FORD Ranger (2012)", "CHEVROLET Agile (ARG 2009)", "Toyota Etios", 
                          "Chevrolet Onix (2013)", NA, "Peugeot 208", "VOLKSWAGEN Suran (2015)", 
                          "VOLKSWAGEN Voyage (2012)", "CHEVROLET Spin (2012)", "CHEVROLET Cobalt", 
                          "TOYOTA Hilux (ARG 2012)", "FORD EcoSport (2012)")), row.names = c(NA, 
                                                                                             20L), class = "data.frame")

df使用您的数据并重新运行代码时,我没有收到任何错误。您提供的两个代码块之间有什么区别?这与产生错误的代码完全相同吗?我无法重现错误,一切都按预期运行,两个代码示例都返回
idential()
结果。有时错误来自某个不匹配的括号,您使用的是语法感知编辑器还是IDE?谢谢您的回答。不同之处在于mutate的右括号中增加了一行。我使用的是RStudio,它会突出显示语法问题,但在我共享的代码中没有检测到任何问题。当您在RStudio中按住ctrl键并输入代码时,它会运行上一块中任何未完成的行。写
x=1
就写
df前面的那行谢谢大家的回复。我想我找到了问题所在。在编写代码时,我通常在句末写下并修改内容。请重试我的示例,当我执行Ctrl+从句子末尾输入(即在
TRUE~modelo\u alternativo]之后)
它崩溃了。我知道它无法识别从
df%>%…
开始的行。这应该发生吗?不确定是我的坏习惯还是IDE问题。非常感谢。
library(lubridate)
library(tidyverse)
library(foreign)
library(here)
library(dplyr)
df <- structure(list(modelo = c("CHEVROLET Sonic (2012)", "CHEVROLET Sonic (2012)", 
                          "CHEVROLET S10 (2012)", "CHEVROLET Sonic (2012)", "CHEVROLET Classic (2010)", 
                          "CHEVROLET Sonic (2012)", "CHEVROLET S10 (2012)", "CHEVROLET S10 (2012)", 
                          "CHEVROLET S10 (2012)", "Chevrolet Prisma (2013)", "Chevrolet Prisma (2013)", 
                          "Chevrolet Prisma (2013)", "Chevrolet Prisma (2013)", "Chevrolet Prisma (2013)", 
                          "Chevrolet Prisma (2013)", "Chevrolet Prisma (2013)", "Chevrolet Prisma (2013)", 
                          "Chevrolet Prisma (2013)", "CHEVROLET S10 (2012)", "Onix (2013)"
), modelo_alternativo = c("VOLKSWAGEN Suran (2015)", "TOYOTA Corolla (2014)", 
                          "TOYOTA Hilux (ARG 2012)", "TOYOTA Corolla (2014)", "VOLKSWAGEN Gol Trend (2012)", 
                          "RENAULT Sandero Stepway (2015)", "FORD Ranger (2012)", "RENAULT FLUENCE (2015)", 
                          "FORD Ranger (2012)", "CHEVROLET Agile (ARG 2009)", "Toyota Etios", 
                          "Chevrolet Onix (2013)", NA, "Peugeot 208", "VOLKSWAGEN Suran (2015)", 
                          "VOLKSWAGEN Voyage (2012)", "CHEVROLET Spin (2012)", "CHEVROLET Cobalt", 
                          "TOYOTA Hilux (ARG 2012)", "FORD EcoSport (2012)")), row.names = c(NA, 
                                                                                             20L), class = "data.frame")