Вложенный цикл for со списками
Итак, я пытался
(1) использовать векторную функцию для создания списка размером 3, назовите их как x, y, z
(2): напишите вложенный цикл for, внешний цикл повторяется по списку (n=1:N), внутренний из t =1:4
(3): присвоить n-му списку в каждой из t-ых позиций вектора значение 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, я все еще не уверен, как это сделать. Может ли кто-нибудь помочь мне с этим? Заранее спасибо.
2 ответа
Решение
Вы почти правы. Проверь это:
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
Вы можете сделать это одним 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)