37

我正在尝试在 R 中设置一个 3D 矩阵。我想这很容易。但是,到目前为止我还没有找到解决方案。假设我们要创建一个 365x6x4 矩阵。对我来说也很重要的是如何更改矩阵中的一个条目。假设我们要将值 204 分配给元素 [304,5,2]。我非常感谢您的回答!

谢谢!最好的,F

4

3 回答 3

46

试试这个:

ar <- array(someData, c(365, 6, 4));  
ar[304,5,2] <- 204;

someData可能在 哪里

someData <- rep(0, 365*6*4);  

甚至更好

someData <- rep(NaN, 365*6*4);  
于 2012-06-09T12:56:04.347 回答
17

矩阵是数组的特殊二维情况。(从帮助中引用?matrix)。

所以,你需要array

x <- array(rep(1, 365*5*4), dim=c(365, 5, 4))
str(x)
num [1:365, 1:5, 1:4] 1 1 1 1 1 1 1 1 1 1 ...

设置特定值:

x[305, 5, 2] <- 204

打印一片:

x[305, , ]
     [,1] [,2] [,3] [,4]
[1,]    1    1    1    1
[2,]    1    1    1    1
[3,]    1    1    1    1
[4,]    1    1    1    1
[5,]    1  204    1    1
于 2012-06-09T12:55:42.523 回答
6

试试这个简单的例子(已经使这个例子变得相当小,所以很清楚发生了什么 - 我在下面解释如何针对您的精确问题调整它!)...

m = array(1:60, dim=c(3,4,5))

m[2,1,5]
[1] 50

m[2,1,5] = -50

m[2,1,5]
[1] -50

键入m以查看整个 3d 数组 :)

在您的示例中,您将初始数组设置为m = array(NA, dim=c(365,6,4))(这将用 NAs 开始填充它 - 您是否有数据可以填充它?)m[304,5,2] = 204当然,分配是 :)

于 2012-06-09T12:54:53.417 回答