如何用purrr::map_df仅对数据框整数列应用函数并保留字符列
解决方法:用
purrr::map_if结合map_df实现指定列处理+保留原列 你的问题出在原代码对所有列应用了标准化函数fun1,字符列(比如rowname列)无法进行数值计算,同时也没有保留原字符列。要实现仅处理整数/数值列、保留字符列的需求,可以用purrr::map_if筛选目标列,再用map_df组合成数据框:
完整代码
fun1 <- function(x){(x - mean(x))/sd(x)} df <- mtcars %>% rownames_to_column() # 处理数值列(若需严格处理整数列,把is.numeric换成is.integer) df_processed <- df %>% map_if(is.numeric, fun1) %>% map_df(~ .x) # 查看结果 head(df_processed)
关键说明
map_if(is.numeric, fun1):只对数值型列应用标准化函数fun1,字符列直接保留原内容;如果你的数据里确实是整数列需要处理,把is.numeric替换成is.integer即可。map_df(~ .x):将map_if返回的列表结构重新转换为数据框,确保输出格式和原数据一致。
内容的提问来源于stack exchange,提问作者Laura
相关产品推荐
相关产品推荐

