R语言如何按位置对多个dataframe的对应元素求平均值
当两个dataframe的维度、列顺序、列名完全匹配时,最简洁的实现方式是直接做逐元素算术运算:
dataC <- (dataA + dataB) / 2
运行后输出结果和预期完全一致:
> dataC A B 1 2 3 2 2 3 3 2 3 4 2 3 5 2 3
如果想要避免因两个dataframe结构不匹配导致的计算错误,可以提前加校验逻辑:
# 校验维度和列名完全一致后再计算 if (identical(dim(dataA), dim(dataB)) && identical(colnames(dataA), colnames(dataB))) { dataC <- (dataA + dataB) / 2 } else { stop("两个dataframe结构不匹配,无法计算逐位置均值") }
如果习惯使用tidyverse套件,也可以用purrr的逐列映射方法实现:
library(purrr) dataC <- map2_dfr(dataA, dataB, ~ (.x + .y) / 2)
内容的提问来源于stack exchange,提问作者Kelsey
相关产品推荐
相关产品推荐

