如何使用Cross根据变量在某个列表中的名称将变量更改为因子?
(我是R的新手) 尝试根据条件将df如何使用Cross根据变量在某个列表中的名称将变量更改为因子?,r,tidyverse,R,Tidyverse,(我是R的新手) 尝试根据条件将df成员的变量数据类型更改为因子,前提是其名称在列表中可用 我使用mutate(cross())尝试了一些代码,但它给出了错误 数据准备: library(tidyverse) # tidytuesday himalayan data members <- read_csv("https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2020/2020-09
成员的变量数据类型更改为因子
,前提是其名称在列表中可用
我使用mutate(cross())
尝试了一些代码,但它给出了错误
数据准备:
library(tidyverse)
# tidytuesday himalayan data
members <- read_csv("https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2020/2020-09-22/members.csv")
# creating list of names
to_factors_list <- members %>%
map_df(~(data.frame(n_distinct = n_distinct(.x))),
.id = "var_name") %>%
filter(n_distinct < 15) %>%
select(var_name) %>% pull()
to_factors_list
############### output ###############
'season''sex''hired''success''solo''oxygen_used''died''death_cause''injured''injury_type'
members %>%
mutate(across(~.x %in% to_factors_list, factor))
我不确定出了什么问题,我如何才能做到这一点?正确的语法是:
members %>% mutate(across(to_factors_list, factor))
或者,如果您更喜欢较旧的版本dplyr
语法:
members %>% mutate_at(vars(to_factors_list), factor)
在base R
中,可以使用lappy
members[to_factors_list] <- lapply(members[to_factors_list], factor)
members[to_factors_list]谢谢@ekoam,我以为它需要一个conidtion语法,结果写错了代码。非常感谢你的帮助!!谢谢@akrun,这也很有帮助!!
members[to_factors_list] <- lapply(members[to_factors_list], factor)