我想在行之间复制一些值,但默认似乎是在列上循环,是否有一种优雅的方式来实现我想要的?
我的以下代码是:
> 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
答案 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), ]