簡體   English   中英

嵌套在列表中的data.frames列的每一行的均值

[英]Mean of each row of data.frames column nested in list

我有許多嵌套在列表中的data.frames,想要在data.frames中獲取列的行均值。 這是我的MWE。 我想知道如何在R中做到這一點?

set.seed(12345)
df1 <- data.frame(x=rnorm(10))
df2 <- data.frame(x=rnorm(10))
ls1 <- list(df1=df1, df2=df2)
ls1

$df1
            x
1   0.5855288
2   0.7094660
3  -0.1093033
4  -0.4534972
5   0.6058875
6  -1.8179560
7   0.6300986
8  -0.2761841
9  -0.2841597
10 -0.9193220

$df2
            x
1  -0.1162478
2   1.8173120
3   0.3706279
4   0.5202165
5  -0.7505320
6   0.8168998
7  -0.8863575
8  -0.3315776
9   1.1207127
10  0.2987237

像這樣的東西

(ls1$df1+ls1$df2)/2


    x
1   0.23464051
2   1.26338903
3   0.13066227
4   0.03335964
5  -0.07232227
6  -0.50052806
7  -0.12812949
8  -0.30388085
9   0.41827645
10 -0.31029915

已編輯

ls1 <- list(df=df1)
ls2 <- list(df=df2) 

如何更連貫地寫出(ls1$df+ls2$df)/2

             x
1   0.23464051
2   1.26338903
3   0.13066227
4   0.03335964
5  -0.07232227
6  -0.50052806
7  -0.12812949
8  -0.30388085
9   0.41827645
10 -0.31029915

提取柱, cbind的data.frames,並計算出該行是指:

rowMeans(do.call(cbind, lapply(ls1, "[", "x")))

如果沒有NA值,另一種選擇是使用Reduce進行元素明智( +Reduce然后除以'ls1'的length

Reduce(`+`, ls1)/length(ls1)
#            x
#1   0.23464051
#2   1.26338903
#3   0.13066227
#4   0.03335964
#5  -0.07232227
#6  -0.50052806
#7  -0.12812949
#8  -0.30388085
#9   0.41827645
#10 -0.31029915

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM