r dplyr::case_When错误:必须是字符向量,而不是双向量 [英] r dplyr::case_when Error: must be a character vector, not a double vector

查看:21
本文介绍了r dplyr::case_When错误:必须是字符向量,而不是双向量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用dplyr::case_When在dplyr::Mariate内替换某些值:

data<-data%>%
  mutate(floor = case_when(
    floor_id == 2 ~ "ground_floor",
    floor_id == 3 ~ "mezzanine",
    floor_id == 1 ~ "basement",
    floor_id == 30 ~ "over_10",
    floor==1 ~ 1,
    floor==2 ~ 2,
    floor==3 ~ 3,
    floor==4 ~ 4,
    floor==5 ~ 5,
    floor==6 ~ 6,
    floor==7 ~ 7,
    floor==8 ~ 8,
    floor==9 ~ 9,
    floor==10 ~ 10,
    TRUE ~ as.character(floor)))

我有一个错误

Error: must be a character vector, not a double vector
我有两个问题: 1)有人知道如何更改代码来修复此错误吗? 2)如果没有匹配的案例,则返回NA,这就是为什么我添加了所有这些行,如Floor==10~10。有什么方法可以减少代码的冗余吗?

推荐答案

  1. case_when是严格类型,表示需要返回相同类型的值。对于前几种情况,您将返回"Ground-Floor"、"Mezzanine"等值,而稍后您将返回数值1、2,因此会出现该错误。如果您将所有返回值更改为字符值,如"1"、"2"等,则它将起作用。

  2. 因为您只是返回floor值,所以可以将代码减少:

    library(dplyr)
    data<- data%>%
            mutate(floor = case_when(
                   floor_id == 2 ~ "ground_floor",
                   floor_id == 3 ~ "mezzanine",
                   floor_id == 1 ~ "basement",
                   floor_id == 30 ~ "over_10",
                   TRUE ~ as.character(floor)))
    

这篇关于r dplyr::case_When错误:必须是字符向量,而不是双向量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆