更改变量名包含 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
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