You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 10:20:21