Очень жаль, что код, сложенный в этом примере, ужасен, так как aving правильно отформатированный код может помочь в понимании кода и ловушек ошибок.
Последние три строки можно рассматривать как анонимную функцию, переданную lapply
. lapply
по существу «забирает» список и для каждого элемента списка применяет эту (анонимную) функцию. В приведенном ниже примере я неоднозначно разделил строки на анонимную функцию и вызов lapply
.
notSoanonymousFunction <- function(x, k, d) {
list(train = d[!(seq(d) %in% seq(k[x,1],k[x,2]))],
test = d[seq(k[x,1],k[x,2])])
}
l <- lapply(seq.int(K), FUN = notSoanonymousFunction, k = k, d = id)
Если вы посмотрите на ?lapply
, вы заметите, что нет k
или d
аргументов. Однако эти аргументы принадлежат нашему notSoanonymousFunction
, а lapply
принимает его через аргумент ...
.
Как умственное упражнение для вас, я покажу вам еще один трюк, как узнать, что делает функция. Если вам нужно увидеть, что происходит внутри функции, поместите вызов browser()
внутри и запустите его. В вашем случае, это будет выглядеть так:
notSoanonymousFunction <- function(x, k, d) {
browser()
list(train = d[!(seq(d) %in% seq(k[x,1],k[x,2]))],
test = d[seq(k[x,1],k[x,2])])
}
После запуска этого, консоль должна сказать что-то вдоль линий
Browser[1] >
Вы теперь эффективно внутри функции. Вы можете перейти к следующей строке, набрав n
, пропустив весь фрагмент на c
и покидая браузер вместе, нажав Q
(см. ?browser()
). Вы можете просматривать и манипулировать объектами ad libidum. Вы можете попробовать, проверив свое рабочее пространство с помощью ls()
, чтобы узнать, какие объекты находятся внутри функции. Вы можете поставить свою семейную ферму, что будут объекты x
, k
и d
.
Что вы не понимаете? Просто заявить, что вы не понимаете, для нас не очень полезно. –
Кроме того, я согласен с @Roman в том, что немного отступов и форматирование кода действительно улучшат читаемость. Я редактировал код, чтобы показать вам, как я буду форматировать код. Я также добавил некоторые пробелы в коде, что делает код менее визуального блока и более читаемым. –