В PHP вы можете получить доступ к обоим имена и значения массива в цикле сПолучить имена списка в цикл
foreach ($array as $key => $value) {
Есть ли что-нибудь сравнимой в R, когда цикл над именованными списками?
В PHP вы можете получить доступ к обоим имена и значения массива в цикле сПолучить имена списка в цикл
foreach ($array as $key => $value) {
Есть ли что-нибудь сравнимой в R, когда цикл над именованными списками?
Использование фиктивный данных и глупый надуманный пример
ll <- list(A = 1:10, B = LETTERS[1:10], C = letters[1:10])
Вы можете lapply()
по индексам элементов ll
:
out <- lapply(seq_along(ll),
function(ind, list, names) {
paste(names[ind], "=", paste(list[[ind]], collapse = ", "))
}, list = ll, names = names(ll))
R> out
[[1]]
[1] "A = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10"
[[2]]
[1] "B = A, B, C, D, E, F, G, H, I, J"
[[3]]
[1] "C = a, b, c, d, e, f, g, h, i, j"
или for()
цикл по списку:
ll2 <- vector("list", length(ll))
nams <- names(ll)
for(i in seq_along(ll)) {
ll2[[i]] <- paste(nams[i], "=", paste(ll[[i]], collapse = ", "))
}
ll2
R> ll2
[[1]]
[1] "A = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10"
[[2]]
[1] "B = A, B, C, D, E, F, G, H, I, J"
[[3]]
[1] "C = a, b, c, d, e, f, g, h, i, j"
Чтобы получить имена lis t вы просто используете names(list)
.
ll <- list(A = 1:10, B = LETTERS[1:10], C = letters[1:10])
names(ll)
#[1] "A" "B" "C"
Большинство * применяются функции будут возвращать значения, которые соответствующим образом названы, если список был назван, чтобы начать с.
sapply(ll, max)
# A B C
#"10" "J" "j"
Можете ли вы быть более конкретным о том, перебираете ли вы цикл с помощью цикла 'for' или с чем-то вроде' lapply' в R? Может быть, очень простой пример (в R-коде)? – joran
@joran: уточненные вопросы. Да, для циклов по спискам. Я не могу использовать lapply в этом конкретном экземпляре. Я задал соответствующий вопрос здесь: http://stackoverflow.com/questions/11112842/r-how-to-store-multi-layer-data – naught101
Ok; вы получаете только синтаксис цикла vanilla 'for' в R. Обычно вы должны ссылаться на каждую часть (имя + элемент), подмножая либо' names (myList) ', либо' myList' с вашим индексом цикла 'i'. – joran