R 列平均值矩阵的生成
根据我的数据,我有一个列均值向量,如下所示:R 列平均值矩阵的生成,r,R,根据我的数据,我有一个列均值向量,如下所示: cmean <- c(v1=50.99013605, v2=13.27823129, v3=67.83265306, v4=25.88299320) v1 v2 v3 v4 50.99013605 13.27823129 67.83265306 25.88299320 我尝试了很多使用rep,但是我没能很好地将它以这种格式
cmean <- c(v1=50.99013605, v2=13.27823129, v3=67.83265306, v4=25.88299320)
v1 v2 v3 v4
50.99013605 13.27823129 67.83265306 25.88299320
我尝试了很多使用
rep
,但是我没能很好地将它以这种格式放到矩阵中。最简便的方法是什么?我们可以使用dim来分配尺寸,这里有一个使用rep()的解决方案
cmean您可以将byrow
参数用于matrix
。例如:
> x <- 1:4
> matrix(x, 4, 4, TRUE)
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 1 2 3 4
[3,] 1 2 3 4
[4,] 1 2 3 4
如果您从data.frame开始,并希望将每列的所有行转换为列的平均值,您可以使用df[]IMHO这是最简单的解决方案,但您应该使用TRUE而不是T,因为R中没有任何内容阻止此重新定义:T如果名称被删除,您最好使用rep.int()
,以提高速度。
`dim<-`(v1[col(d2)], dim(d2))
# [,1] [,2] [,3] [,4]
#[1,] 50.99014 13.27823 67.83265 25.88299
#[2,] 50.99014 13.27823 67.83265 25.88299
#[3,] 50.99014 13.27823 67.83265 25.88299
#[4,] 50.99014 13.27823 67.83265 25.88299
do.call(rbind, replicate(nrow(d2), v1, simplify=FALSE))
# v1 v2 v3 v4
#[1,] 50.99014 13.27823 67.83265 25.88299
#[2,] 50.99014 13.27823 67.83265 25.88299
#[3,] 50.99014 13.27823 67.83265 25.88299
#[4,] 50.99014 13.27823 67.83265 25.88299
(d2/d2)*v1[col(d2)]
library(dplyr)
d2 %>%
mutate_each(funs(mean))
cmean <- c(v1=50.99013605, v2=13.27823129, v3=67.83265306, v4=25.88299320)
M <- 5 # number of rows
matrix(rep(cmean, each=M), M)
#> matrix(rep(cmean, each=M), M)
# [,1] [,2] [,3] [,4]
#[1,] 50.99014 13.27823 67.83265 25.88299
#[2,] 50.99014 13.27823 67.83265 25.88299
#[3,] 50.99014 13.27823 67.83265 25.88299
#[4,] 50.99014 13.27823 67.83265 25.88299
#[5,] 50.99014 13.27823 67.83265 25.88299
x <- matrix(rep(cmean, each=M), M)
colnames(x) <- names(cmean)
> x <- 1:4
> matrix(x, 4, 4, TRUE)
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 1 2 3 4
[3,] 1 2 3 4
[4,] 1 2 3 4
> matrix(x, 4, 4)
[,1] [,2] [,3] [,4]
[1,] 1 1 1 1
[2,] 2 2 2 2
[3,] 3 3 3 3
[4,] 4 4 4 4