1

我在 R 中的程序创建了一个 n 维数组。

PVALUES = array(0, dim=dimensions)

在哪里dimensions = c(x,y,z, ... )

尺寸将取决于特定的输入。所以,我想创建一个通用代码,它将:

  1. 将特定元素存储在数组中
  2. 从数组中读取特定元素

通过阅读这个网站,我学会了如何做#2 - 从数组中读取一个元素

ll=list(x,y,z, ...)
element_xyz = do.call(`[`, c(list(PVALUES), ll))

请帮我解决#1,即将元素存储到n维数组。


让我重新表述我的问题

假设我有一个 4 维数组。我可以存储一个值并从此数组中读取一个值:

PVALUES[1,1,1,1] = 43 #set a value
data = PVALUES[1,1,1,1] #use a value

如何使用索引向量的函数执行相同的操作:

indexes = c(1,1,1,1)
set(PVALUES, indexes) = 43
data = get(PVALUES, indexes) ?

谢谢

4

2 回答 2

1

感谢您的帮助。

我将使用以下解决方案:

PVALUES = array(0, dim=dimensions) #Create an n-dimensional array
dimensions = c(x,y,z,...,n)

将值设置为 PVALUES[x,y,z,...,n]:

y=c(x,y,z,...,n)
PVALUES[t(y)]=26

从 PVALUES[x,y,z,...,n] 中读取一个值:

y=c(x,y,z,...,n)
data=PVALUES[t(y)]
于 2014-11-14T18:01:02.443 回答
0

数组的索引可以使用列数与维数相同的矩阵来完成:

  # Assignment with "[<-"
  newvals <- matrix( c( x,y,z,vals), ncol=4)     
  PVALUES[ newvals[ ,-4] ]  <- vals

 # Reading values with "["
 PVALUES[ newvals[ ,-4] ]
于 2014-11-14T17:54:48.603 回答