dplyr::funs() 软弃用 - 更新为 return 变量名
dplyr::funs() soft deprecated - update to return variable name
花了很多时间在这上面,所以希望有人能提供建议。我有一段使用 funs() 的代码,它已被软弃用,因此尝试了替代方法但无法使其按预期工作。
旧:
df %>% mutate_at(vars(x,y,z),
.funs = funs(Comment = case_when(
.%in% "YES") ~ deparse(substitute(.))))
这给出了三个新变量:x_Comment、y_Comment 和 z_Comment - 并将包含相关的变量名称(“x”、“y”或“z”)如果相关变量包含“YES”
更新:
df %>% mutate_at(vars(x,y,z),
.funs = list(Comment = ~case_when(
.%in% "YES") ~ deparse(substitute(.))))
我已经根据关于 funs() 被软弃用的警告更新了代码,但是上面的代码不起作用。它按预期提供三个新变量:x_Comment、y_Comment 和 z_Comment - 但是,如果相关变量包含“YES”,它会给出“.”。而不是变量名。
任何解决方案 - 最好是 tidyverse 非常感谢!
谢谢!
这是你想要的吗?
library(tidyverse)
df <- tibble(
x=c("Yes", "No", "No"),
y=c("No", "Yes", "No"),
z=c("No", "No", "Yes")
)
df %>%
mutate(
across(everything(),
~ifelse(.x == "Yes", cur_column(), ""),
.names="Comment_{col}")
)
# A tibble: 3 x 6
x y z Comment_x Comment_y Comment_z
<chr> <chr> <chr> <chr> <chr> <chr>
1 Yes No No "x" "" ""
2 No Yes No "" "y" ""
3 No No Yes "" "" "z"
请注意 mutate_at
也已弃用。
花了很多时间在这上面,所以希望有人能提供建议。我有一段使用 funs() 的代码,它已被软弃用,因此尝试了替代方法但无法使其按预期工作。
旧:
df %>% mutate_at(vars(x,y,z),
.funs = funs(Comment = case_when(
.%in% "YES") ~ deparse(substitute(.))))
这给出了三个新变量:x_Comment、y_Comment 和 z_Comment - 并将包含相关的变量名称(“x”、“y”或“z”)如果相关变量包含“YES”
更新:
df %>% mutate_at(vars(x,y,z),
.funs = list(Comment = ~case_when(
.%in% "YES") ~ deparse(substitute(.))))
我已经根据关于 funs() 被软弃用的警告更新了代码,但是上面的代码不起作用。它按预期提供三个新变量:x_Comment、y_Comment 和 z_Comment - 但是,如果相关变量包含“YES”,它会给出“.”。而不是变量名。
任何解决方案 - 最好是 tidyverse 非常感谢!
谢谢!
这是你想要的吗?
library(tidyverse)
df <- tibble(
x=c("Yes", "No", "No"),
y=c("No", "Yes", "No"),
z=c("No", "No", "Yes")
)
df %>%
mutate(
across(everything(),
~ifelse(.x == "Yes", cur_column(), ""),
.names="Comment_{col}")
)
# A tibble: 3 x 6
x y z Comment_x Comment_y Comment_z
<chr> <chr> <chr> <chr> <chr> <chr>
1 Yes No No "x" "" ""
2 No Yes No "" "y" ""
3 No No Yes "" "" "z"
请注意 mutate_at
也已弃用。