gpt4 book ai didi

r - 在R中构造动态大小的数组

转载 作者:行者123 更新时间:2023-12-04 13:15:05 25 4
gpt4 key购买 nike

我想知道在R中构造动态大小数组的方法是什么。

举一个例子,我想构造一个n向量,但是它的维数n是动态确定的。以下代码将起作用:

> x=NULL  
> n=2;
> for (i in 1:n) x[i]=i;
> x
[1] 1 2

再举一个例子,我想构造一个n×2的矩阵,其中n的行数是动态确定的。但是我什至没有分配第一行:
> tmp=c(1,2)  
> x=NULL
> x[1,]=tmp
Error in x[1, ] = tmp : incorrect number of subscripts on matrix
> x[1,:]=tmp
Error: unexpected ':' in "x[1,:"

感谢致敬!

最佳答案

填充数组后,可以对数组进行标注(以一维,向量,方式)
模拟问题的一维代码段,这是在较大维度上可以完成的方式。

> x=c()
> tmp=c(1,2)
> n=6
> for (i in seq(1, by=2, length=n)) x[i:(i+1)] =tmp;
> dim(x) = c(2,n)
> x
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1 1 1 1 1 1
[2,] 2 2 2 2 2 2
>

与其使用 i:(i+1)作为索引,不如使用 seq(i, length=2)或更好的方法,更可取的是使用 seq(i, length=length(tmp))作为更通用的方法,如下所示(对于4 x 7数组示例)
> x=c()
> tmp=c(1,2,3,4)
> n=7
> for (i in seq(1, by=length(tmp), length=n))
x[seq(i, length=length(tmp))] = tmp;
> dim(x) = c(length(tmp),n)
> x
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,] 1 1 1 1 1 1 1
[2,] 2 2 2 2 2 2 2
[3,] 3 3 3 3 3 3 3
[4,] 4 4 4 4 4 4 4
>

我们还可以通过使用cbind/rbind重新分配x来获得类似的结果,如下所示。
> tmp=c(1,2)
> n=6
> x=rbind(tmp)
> for (i in 1:n) x=rbind(x, tmp);
> x
[,1] [,2]
tmp 1 2
tmp 1 2
tmp 1 2
tmp 1 2
tmp 1 2
tmp 1 2
tmp 1 2

注意:可以摆脱“tmp”名称(这些是rbind的副作用), > dimnames(x)=NULL

关于r - 在R中构造动态大小的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4357866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com