如何将环境中的每个数据对象的字符串都设为小写?或者列表中的每个元素
How do I make only the character strings lowercase for every data object in the environment? OR every element in a list
我有大量的数据框对象,我想应用一个函数,只将字符串转换为小写,而保留所有其他内容的 类。
我试过 mutate_all(df,tolower)
但影响了所有 variables/columns
我试过 mutate_at(names(select_if(df,is.character)),tolower)
并且这确实适用于单个数据框。但我需要同时跨多个数据帧执行此操作。我真的很不擅长迭代和循环,所以如果代码在每个对象上迭代这行代码可能是一个解决方案。
或者,因为我在列表中也有这些数据帧,所以我尝试了
modify_depth(df,.depth = 2, mutate_at(names(select_if(,is.character)),tolower))
但这没有用。 modify
在 purrr 包中
library(dplyr)
library(purrr)
data_frame_Rate_Table <- data.frame(Policy_Class = c("rED", "WhIte","BlUe"),
Rate=c(3,9,19),"Factor_1"= 1:3, Factor_2=7:9, stringsAsFactors = FALSE)
data_frame_Policyholders <- data.frame(Policy_number = 1:10,
Policy_Class=rep(c("REd","red","wHite","BLue","bluE"),2),
Risk=c(rep("HiGh",5),rep("LOW",5)),
Lapse=rep(c("Y","N"),5), stringsAsFactors = FALSE)
data_frame_list <- list(data_frame_Policyholders, data_frame_Rate_Table)
我希望所有的字符串都小写而不影响其他 类。
"and over a list of dataframes map(data_frame_list, ~mutate_if(.x,is.character,tolower))
"– AndS。 7 分钟前
这是 AndS 的评论,这正是我想要发生的事情。谢谢安德!
我将此作为答案而不是评论。
您可以在基础 R 中使用 rapply
。
data_frame_list <- rapply(data_frame_list, function(x)
if(is.character(x)) tolower(x) else x, how="replace")
# [[1]]
# Policy_number Policy_Class Risk Lapse
# 1 1 red high y
# 2 2 red high n
# 3 3 white high y
# 4 4 blue high n
# 5 5 blue high y
# 6 6 red low n
# 7 7 red low y
# 8 8 white low n
# 9 9 blue low y
# 10 10 blue low n
#
# [[2]]
# Policy_Class Rate Factor_1 Factor_2
# 1 red 3 1 7
# 2 white 9 2 8
# 3 blue 19 3 9
我有大量的数据框对象,我想应用一个函数,只将字符串转换为小写,而保留所有其他内容的 类。
我试过 mutate_all(df,tolower)
但影响了所有 variables/columns
我试过 mutate_at(names(select_if(df,is.character)),tolower)
并且这确实适用于单个数据框。但我需要同时跨多个数据帧执行此操作。我真的很不擅长迭代和循环,所以如果代码在每个对象上迭代这行代码可能是一个解决方案。
或者,因为我在列表中也有这些数据帧,所以我尝试了
modify_depth(df,.depth = 2, mutate_at(names(select_if(,is.character)),tolower))
但这没有用。 modify
在 purrr 包中
library(dplyr)
library(purrr)
data_frame_Rate_Table <- data.frame(Policy_Class = c("rED", "WhIte","BlUe"),
Rate=c(3,9,19),"Factor_1"= 1:3, Factor_2=7:9, stringsAsFactors = FALSE)
data_frame_Policyholders <- data.frame(Policy_number = 1:10,
Policy_Class=rep(c("REd","red","wHite","BLue","bluE"),2),
Risk=c(rep("HiGh",5),rep("LOW",5)),
Lapse=rep(c("Y","N"),5), stringsAsFactors = FALSE)
data_frame_list <- list(data_frame_Policyholders, data_frame_Rate_Table)
我希望所有的字符串都小写而不影响其他 类。
"and over a list of dataframes map(data_frame_list, ~mutate_if(.x,is.character,tolower))
"– AndS。 7 分钟前
这是 AndS 的评论,这正是我想要发生的事情。谢谢安德!
我将此作为答案而不是评论。
您可以在基础 R 中使用 rapply
。
data_frame_list <- rapply(data_frame_list, function(x)
if(is.character(x)) tolower(x) else x, how="replace")
# [[1]]
# Policy_number Policy_Class Risk Lapse
# 1 1 red high y
# 2 2 red high n
# 3 3 white high y
# 4 4 blue high n
# 5 5 blue high y
# 6 6 red low n
# 7 7 red low y
# 8 8 white low n
# 9 9 blue low y
# 10 10 blue low n
#
# [[2]]
# Policy_Class Rate Factor_1 Factor_2
# 1 red 3 1 7
# 2 white 9 2 8
# 3 blue 19 3 9