在R中如何在数组中复制时控制值的循环方向?

时间:2013-06-07 17:01:41

标签: r

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

我的以下代码是:

> 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 个答案:

答案 0 :(得分: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

答案 1 :(得分:5)

按行创建矩阵,然后分配:

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

答案 2 :(得分: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

答案 3 :(得分:1)

w[2:4, ] <- matrix(c(2,3),nrow=1)[ rep(1,3), ]