使用索引向量函数访问R中的n维数组

时间:2014-11-14 17:15:20

标签: arrays r n-dimensional

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

PVALUES = array(0, dim=dimensions)

其中dimensions = c(x,y,z, ... )

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

  1. 将特定元素存储在数组中
  2. 从数组中读取特定元素
  3. 通过阅读本网站,我学会了如何做#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) ?
    

    谢谢

2 个答案:

答案 0 :(得分:0)

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

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

 # Reading values with "["
 PVALUES[ newvals[ ,-4] ]

答案 1 :(得分:0)

感谢您的回复。

我将使用以下解决方案:

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)]