R 使用循环函数计算具有特定列的行平均值

R 使用循环函数计算具有特定列的行平均值,r,apply,lapply,R,Apply,Lapply,假设我有下面的数据框 a <- data.frame(A = 1:10, B = 26:35, C = 101:110, D = 1001:1010) a[c(2,4,7),"A"] <- NA a A B C D 1 1 26 101 1001 2 NA 27 102 1002 3 3 28 103 1003 4 NA 29 104 1004 5 5 30 105 1005 6 6 31 106 1006 7 NA 32 107 1007

假设我有下面的数据框

a <- data.frame(A = 1:10, B = 26:35, C = 101:110, D = 1001:1010)
a[c(2,4,7),"A"] <- NA
a

    A  B   C    D
1   1 26 101 1001
2  NA 27 102 1002
3   3 28 103 1003
4  NA 29 104 1004
5   5 30 105 1005
6   6 31 106 1006
7  NA 32 107 1007
8   8 33 108 1008
9   9 34 109 1009
10 10 35 110 1010

a首先,data.frame不是完全存储数字数据的正确方法:

m = as.matrix(a)
从这里,我们可以找到
NA
值在矩阵中的位置

idx = which(is.na(m), arr.ind=TRUE)


     row col
[1,]   2   1
[2,]   4   1
[3,]   7   1
并填写它们

m[idx] <- rowMeans(m[idx[,1], ], na.rm=TRUE)


        A  B   C    D
 [1,]   1 26 101 1001
 [2,] 377 27 102 1002
 [3,]   3 28 103 1003
 [4,] 379 29 104 1004
 [5,]   5 30 105 1005
 [6,]   6 31 106 1006
 [7,] 382 32 107 1007
 [8,]   8 33 108 1008
 [9,]   9 34 109 1009
[10,]  10 35 110 1010

我还在dupe链接中添加了这一点。
library(zoo)
t(na.aggregate(t(m)))