【发布时间】:2016-09-26 10:40:39
【问题描述】:
我有一个新手问题:
Example of a dataset:
dat = matrix(1:6,3,2) #create a dataset
# [,1] [,2]
#[1,] 1 4
#[2,] 2 5
#[3,] 3 6
rmean = rowMeans(dat) # calculate the row means of dat
#[1] 2.5 3.5 4.5
cmean = colMeans(dat) # calculate the colum means of dat
#[1] 2 5
我想要一个如下的矩阵:
[,1] [,2]
[1,] 5.5 11.5
[2,] 7.5 13.5
[3,] 9.5 15.5
第一行计算如下:
1+rowmeans(2.5) + colmeans(2) = 5.5
4+rowmeans(2.5) + colmeans(5) = 11.5
这是我尝试过的:
newdat = matrix(NA, 3,2)
for (row in 1:nrow(dat))
for (col in 1:ncol(dat)) {
rmean = rowMeans(dat)
cmean = colMeans(dat)
newdat[row,col] = dat[row,] + rmean[row] + cmean[col]
}
任何帮助将不胜感激,请更正我的 for 循环。
【问题讨论】:
-
我看这里没有减法,尽管有标题
-
另一个相当愚蠢的选择:
dat + ave(dat, col(dat)) + ave(dat, row(dat))