首页 > 解决方案 > Case_when 错误'x 必须是字符向量,而不是双向量'?

问题描述

我正在尝试使用 case_when() 根据四位数字(保存为字符/字符串变量)对观察结果进行分类。

我的数据如下:

Form
2 1 0 1
1 0 1 2
2 2 0 0 
2 1 0 1 

我使用 case_when() 如下:

dat <- dat %>%
mutate(FormName = case_when(
(form == '2 1 0 1') ~ 'Open Left', 
(form == '1 0 1 2') ~ 'Open Right', 
(form == '2 2 0 0') ~ 'Spread', 
TRUE ~ 0))

应该产生:

Form        FormName
2 1 0 1     'Open Left'
1 0 1 2     'Open Right'
2 2 0 0     'Spread'
2 1 0 1     'Open Left'

相反,我收到以下错误:

Error: Problem with `mutate()` input `FormName`.
x must be a character vector, not a double vector.
ℹ Input `formation` is `case_when(...)`.

我不明白为什么会发生这种情况,因为“表单”列是字符变量?知道如何解决这个问题吗?

标签: rdataframe

解决方案


解决此问题的最佳方法:

创建一个命名向量并使用该向量

vct = c('2 1 0 1' = "Open Left", '1 0 1 2' = "Open Right", '2 2 0 0' = "Spread")
dat %>%
  mutate(FormName  = vct[form])

推荐阅读