1

我想跨行复制一些值,但默认值似乎是在列上循环,有没有一种优雅的方式来实现我想要的?

我拥有的以下代码是:

> w = array(NA,dim=c(4,2))
> w
     [,1] [,2]
[1,]   NA   NA
[2,]   NA   NA
[3,]   NA   NA
[4,]   NA   NA
> w[2:4,] = c(2,3)
> w
     [,1] [,2]
[1,]   NA   NA
[2,]    2    3
[3,]    3    2
[4,]    2    3

但我希望这些值在行上循环以获得:

     [,1] [,2]
[1,]   NA   NA
[2,]    2    3
[3,]    2    3
[4,]    2    3
4

4 回答 4

7

您可以编写一个新的转置赋值函数:

`t<-` <- function(x, value)
{
    t(matrix(value, nrow=ncol(x), ncol=nrow(x)))
}

结果:

> w = array(NA,dim=c(4,2))
> t(w[2:4,]) = c(2,3)
> w
     [,1] [,2]
[1,]   NA   NA
[2,]    2    3
[3,]    2    3
[4,]    2    3
于 2013-06-07T17:43:14.867 回答
5

逐行创建矩阵,然后分配它:

w[2:4, ] <- matrix(c(2,3), nrow=3, ncol=2, byrow=TRUE)

于 2013-06-07T17:05:16.233 回答
1

另一种优雅的方式:-)

 w[2:4,] <- rep(c(2,3),each=length(2:4))
     [,1] [,2]
[1,]   NA   NA
[2,]    2    3
[3,]    2    3
[4,]    2    3
于 2013-06-07T17:49:23.087 回答
1
w[2:4, ] <- matrix(c(2,3),nrow=1)[ rep(1,3), ]
于 2013-06-07T18:33:31.247 回答