0

所以我试图
(1)使用向量函数创建一个大小为3的列表,将它们命名为x,y,z
(2):编写一个嵌套的for循环,外层循环遍历列表(n = 1: N),inner from t=1:4
(3):分配给向量中每个第t个位置的第n个列表,值10n+t

我目前得到的是

N = 3
N_list <- vector(mode = "list", length = N) 
list_names <- c('x', 'y', 'z')
names(N_list) <- list_names
inner <- NULL
for (n in 1:N) {
    for (t in 1:4) {
        inner[[t]] <- t  
    }
    N_list[[n]] <- (10*n+inner[[t]]) 
}

虽然我希望列表如下:

$x  
[1] 11, 12, 13, 14  
$y    
[1] 21, 22, 23, 24  
$z  
[1] 31, 32, 33, 34  

实际上,每个列表我只得到 14、24、34。

虽然我搜索了很多文章来了解嵌套 for 循环的逻辑,但我仍然不知道该怎么做。有人可以帮我解决这个问题吗?先感谢您。

4

2 回答 2

1

你几乎是正确的。看一下这个:

N = 3
N_list <- vector(mode = "list", length = N) 
list_names <- c('x', 'y', 'z')
names(N_list) <- list_names

for (n in 1:N) {
    inner <- NULL # You should define inner here.
    for (t in 1:4) {
        inner[t] <- t  
    }
    N_list[[n]] <- (10 * n + inner) 
}

N_list
$x
[1] 11 12 13 14

$y
[1] 21 22 23 24

$z
[1] 31 32 33 34
于 2020-07-26T23:56:23.360 回答
1

你可以用一个for循环来做到这一点:

N = 3
N_list <- vector(mode = "list", length = N) 
list_names <- c('x', 'y', 'z')
names(N_list) <- list_names
inner <- 1:4

for (n in 1:N) {
   N_list[[n]] <- (10*n+inner) 
}
N_list
#$x
#[1] 11 12 13 14

#$y
#[1] 21 22 23 24

#$z
#[1] 31 32 33 34

您还可以使用lapply

lapply(seq_len(N), function(x) 10 * x + inner)
于 2020-07-26T23:51:23.817 回答