【问题标题】:R fixed length array of empty arraysR固定长度的空数组数组
【发布时间】:2014-12-06 22:42:01
【问题描述】:

我知道之前有人问过这个问题,但我无法理解我发现的内容。我正在寻找在 R 中创建一个固定长度的双精度数组,对此的正确声明是什么?我认为希望能够将元素推送到这些数组中,例如 array[1][]=0.1array[2][]=0.2 等。

【问题讨论】:

  • 这与具有 N 列的两行矩阵有何不同?定义一个长度为 N 的列表并用两个元素向量填充它也很容易。
  • 我将元素推入一个循环,因此它最终将成为 N 个不同长度的数组。
  • 那么它只是一个列表。并发症在哪里?
  • 我不确定正确的数据结构及其声明是什么。它是 double 类型的向量列表还是向量的向量?
  • 在 R 中没有输入列表。您可以创建一个具有特定方法的类。目前尚不清楚此调用结束时空的“[]”对是什么意思。最好用自然语言来描述期望的结果,而不是用你的听众可能不会分享的其他编程范式。

标签: arrays r multidimensional-array vector dataframe


【解决方案1】:

一种方法是这样做:

list_a<-vector("list",number_of_vectors) 然后使用

设置每个列表项

list_a[[i]]<-c(list_a[[i]],num_to_push_back); 等每个i

您可以增加列表中的向量 - 但不建议在 R... 中增加东西。

然后你可以为你的数组做list_a[[a]][b]。但是语法很悲惨,我敢打赌在丙泊酚上的表现会比杰克逊慢。

避免使用参差不齐的数组的另一种更“R-惯用”的方法可能是预先分配(或创建/无论如何)尺寸大于最大向量长度的矩阵。较短向量的缺失值可以用NA 填充 - R 中的许多/大多数功能旨在应对NA。或者在使用向量时简单地使用函数na.omit。比如

Not_a_ragged_array=matrix(NA,10,10) #a 10 by 10 matrix filled with NAs
#fill each column with a vector of random numbers, of random length 
num_rows=sample.int(9,10,replace=TRUE); for(i in 1:10){Not_a_ragged_array[1:num_rows[i],i]=rbinom(num_rows[i],10,0.8)}
Not_a_ragged_array
#      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
# [1,]    8    9    7    8    7   10    8    7    9     9
# [2,]    8   10   NA    6    8    9    8   NA    8     6
# [3,]    7    7   NA   10    7    9    9   NA    9     9
# [4,]   NA    9   NA    6   10    7   NA   NA    6     9
# [5,]   NA    5   NA    9    7    6   NA   NA   NA     9
# [6,]   NA    8   NA    9    9   NA   NA   NA   NA     8
# [7,]   NA   NA   NA    9   NA   NA   NA   NA   NA     9
# [8,]   NA   NA   NA    8   NA   NA   NA   NA   NA     8
# [9,]   NA   NA   NA   NA   NA   NA   NA   NA   NA    NA
#[10,]   NA   NA   NA   NA   NA   NA   NA   NA   NA    NA

as.vector(na.omit(Not_a_ragged_array[,1])) #get individual vectors like this
#[1] 8 8 7

【讨论】:

  • 这是我一直在寻找的功能。不太熟悉 R 数据类型和性能 - 是否有更明智的方法来完成此任务?
  • 没关系。通常人们会在不熟悉答案时提出问题……所以这是意料之中的。我认为这是 R 中创建您正在寻找的对象(参差不齐的数组)的唯一方法(其他方法是这种方法的变体)。你可以在这里寻找相同主题的变体:r-bloggers.com/efficient-ragged-arrays-in-r-and-rcpp。要确定您的 实际 问题是否真的需要使用不规则数组,需要更多地了解您的问题。我用更“R 惯用”的建议编辑了答案,以避免参差不齐的数组。
猜你喜欢
  • 2011-05-30
  • 2011-05-18
  • 2020-08-31
  • 1970-01-01
  • 1970-01-01
  • 2011-02-16
  • 2020-03-11
相关资源
最近更新 更多