Включение индекса в команду вставки при выполнении цикла в R

На самом деле, это не ошибка дизайна, и это происходит не из-за внутренних компонентов, а из-за производительности. Это происходит просто из-за того, что функции в Python являются первоклассными объектами, а не только частью кода.

Как только вы додумаетесь до этого, тогда это полностью имеет смысл: функция - объект, оцениваемый по его определению; параметры по умолчанию являются «данными-членами», и поэтому их состояние может меняться от одного вызова к другому - точно так же, как и к любому другому объекту.

В любом случае Effbot имеет очень хорошее объяснение причин это поведение в Значения параметров по умолчанию в Python . Я нашел это очень ясным, и я действительно предлагаю прочитать его, чтобы лучше узнать, как работают объекты функций.

0
задан camille 26 March 2019 в 16:56
поделиться

2 ответа

Более подходящим способом «R» может быть:

List_12 <- as.list(1:2)

for(i in 1:2){
    for(j in 1:2){
        List_12[[i]][[j]] <- i
    }
}

Вы можете назвать свои списки в этой структуре:

names(List_12) <- paste0("List_",c(1,2))

Затем вы можете индексировать по имени:

[ 112]
0
ответ дан bruce.moran 26 March 2019 в 16:56
поделиться

Мне не ясно, почему в каждом списке должны быть только нули. Однако присвоение элементов вставленным именам является головной болью в R. Вы должны использовать функцию assign и указать среду. Примерно так.

for(i in 1:2){
  values <- list(1:i)
  assign(x = paste0("List_", i), value = values, envir = globalenv())
}

List_1
[[1]]
[1] 1
List_2
[[1]]
[1] 1 2
0
ответ дан Graeme Prentice-Mott 26 March 2019 в 16:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: