如何将dataframe的每一列与其对应标准差相乘(R语言实操)
解决方案
你可以通过以下几种方式实现sim_data每一列与sd_d中对应标准差的相乘:
方法1:使用dplyr(tidyverse风格)
如果习惯tidyverse语法,用across可以简洁完成列操作:
library(dplyr) scaled_data <- sim_data %>% mutate(across(everything(), ~ .x * sd_d[cur_column(), "sd_d"]))
方法2:Base R 简洁写法
利用R的广播特性,转置sd_d为行向量后直接相乘,自动匹配对应列:
scaled_data <- sim_data * t(sd_d)
方法3:Base R 显式循环(可读性强)
如果需要更清晰的逻辑,用sapply遍历列名完成匹配相乘:
scaled_data <- as.data.frame(sapply(names(sim_data), function(col_name) { sim_data[[col_name]] * sd_d[col_name, "sd_d"] }))
说明
三种方法都依赖sd_d的行名与sim_data的列名完全匹配——你的代码中sd_d是通过apply(sim_data,2,sd)生成的,行名会自动对应sim_data的列名,所以无需额外处理匹配逻辑。
内容的提问来源于stack exchange,提问作者Ramakrishna S
相关产品推荐
相关产品推荐

