-4

我想知道是否有一种方法可以创建 a1, a2, a3...a15 但在矩阵中给它一个 [i,j] 的位置(在 R 中)

for(i in 1:15)
{
for(j in 1:10)
{
 assign(paste("a",i,sep="")),i)
}
}

例如:

   With i=1: `a1[1,1]=1, a1[1,2]=1`

在接下来的 i=2 中:a2[2,1]=2, a2=[2,2]=2

        i=10: `a10[10,1]=10,a2[10,2]=10`
4

2 回答 2

1

也许是这样的?

a <- array(dim=c(4,4,2))

for(i in 1:4)
{
  a[i,i,] <- i
}

a[1,,]
#      [,1] [,2]
# [1,]    1    1
# [2,]   NA   NA
# [3,]   NA   NA
# [4,]   NA   NA

a[3,,]
#      [,1] [,2]
# [1,]   NA   NA
# [2,]   NA   NA
# [3,]    3    3
# [4,]   NA   NA
于 2013-06-27T15:56:48.350 回答
1

不清楚您在寻找什么 - 它是包含您指示的值的矩阵吗?IE

m <- matrix(rep(1:10, each = 15), byrow = TRUE, ncol = 15)
rownames(m) <- paste0("a", 1:10)

> m
    [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14]
a1     1    1    1    1    1    1    1    1    1     1     1     1     1     1
a2     2    2    2    2    2    2    2    2    2     2     2     2     2     2
a3     3    3    3    3    3    3    3    3    3     3     3     3     3     3
a4     4    4    4    4    4    4    4    4    4     4     4     4     4     4
a5     5    5    5    5    5    5    5    5    5     5     5     5     5     5
a6     6    6    6    6    6    6    6    6    6     6     6     6     6     6
a7     7    7    7    7    7    7    7    7    7     7     7     7     7     7
a8     8    8    8    8    8    8    8    8    8     8     8     8     8     8
a9     9    9    9    9    9    9    9    9    9     9     9     9     9     9
a10   10   10   10   10   10   10   10   10   10    10    10    10    10    10
    [,15]
a1      1
a2      2
a3      3
a4      4
a5      5
a6      6
a7      7
a8      8
a9      9
a10    10

或者您希望这些行中的每一行都作为一个向量?IE

vecs <- split(rep(1:10, each = 15), rep(1:10, each = 15))
names(vecs) <- paste0("a", seq_along(vecs))
vecs[1:3]

> vecs[1:3]
$a1
 [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

$a2
 [1] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2

$a3
 [1] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3

vecs是您指示的向量的列表,这是存储这些数据的更好方法,因为您可以使用诸如lapply()在单个操作中处理向量集的工具。

于 2013-06-27T15:38:11.117 回答