R固定长度的空数组数组

时间:2014-12-06 22:42:02

标签: arrays r multidimensional-array vector dataframe

我知道此前已被问到一堆,但我无法弄清楚我发现了什么。我想在R中创建一个固定长度的双精度数组数组,这是正确的声明吗?我认为希望能够将元素推送到这些数组中,例如array[1][]=0.1array[2][]=0.2等。

1 个答案:

答案 0 :(得分:0)

一种方法是:

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

设置每个列表项 每个list_a[[i]]<-c(list_a[[i]],num_to_push_back);

i等。

你可以在列表中增长向量 - 但是在R ...

中增长内容并不可取。

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

另一个,更多&#34; R-idiomatic&#34;避免使用参差不齐的数组的方法可能是预先分配(或创建/不管)尺寸大于最大矢量长度的矩阵。较短的向量的缺失值可以填充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