更改变量名包含 R 中特定模式的值

Changing values whose variable names contain cerntain pattern in R

kal1a01 kal1b01 kal1c01 kal1a02 kal1b02 kal1c02
 1       2      -1      -2      -3      -4
-2      -2      1       -2      -1      -4

我想用以下字符替换这些值:

-1 = .a 
-2 = .b
-3 = .c
-4 = .d 

因此,我尝试了:

vars(stars_with("kal1")) = case_when(vars(stars_with("kal1")) == -1 ~ ".a",
                                         vars(stars_with("kal1")) == -2 ~ ".b",
                                         vars(stars_with("kal1")) == -3 ~ ".c",
                                         vars(stars_with("kal1")) == -4 ~ ".d")

但是,我得到了错误:

Error in eval_tidy(pair$lhs, env = default_env) : 
  'list' object cannot be coerced to type 'double'

为什么会出现此错误,解决方案是什么?

您的语法不正确。试试这个 -

library(dplyr)

df %>%
  mutate(across(starts_with("kal1"), ~case_when(. == -1 ~ "a", 
                                               . == -2 ~ "b", 
                                               . == -3 ~ "c", 
                                               . == -4 ~ "d", 
                                               TRUE ~ as.character(.))))

#  kal1a01 kal1b01 kal1c01 kal1a02 kal1b02 kal1c02
#1       1       2       a       b       c       d
#2       b       b       1       b       a       d