在R中查找多个 Dataframe 的最小值[已关闭]

a6b3iqyw  于 2022-12-06  发布在  其他
关注(0)|答案(2)|浏览(111)

**已关闭。**此问题需要debugging details。当前不接受答案。

编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
2天前关闭。
Improve this question
我有3个维度相同的 Dataframe 。我想从3个 Dataframe 中的每个元素创建一个具有最小值的 Dataframe 。有没有比在cloumn上运行循环然后行逐个遍历每个元素更有效的方法?
第一个
谢谢你,谢谢你
我对每一列和每一行尝试了简单的循环for(c in 1:3){ for(r in 1:2){......} }

q0qdq0h2

q0qdq0h21#

您可以在列上循环并使用pmin

as.data.frame(lapply(1:ncol(X), \(i) pmin(X[[i]], Y[[i]], Z[[i]])))

如果需要泛化到更多 Dataframe ,我会将它们放在list中,并将do.callpmin一起使用。
(答案未经测试,因为未提供样本数据。)
更通用的解决方案是将 Dataframe 堆叠到3D阵列中,并使用apply

arr = abind(A, B, C, along = 3)
result = apply(arr, 1:2, min)
q3qa4bjr

q3qa4bjr2#

另一个选项是:潮流:

library(purrr)
map_dfc(transpose(df_list), lift(pmin))

data.table:

library(data.table)
rbindlist(df_list, idcol = "group")[,lapply(.SD,min),rowid(group)]

基准R

aggregate(do.call(rbind,df_list), list(sequence(sapply(df_list, nrow))), min)

编辑:

基本R方法:

Reduce(function(x,y)replace(x, x>y , y[x>y]), list_df)

相关问题