Я столкнулся с проблемой при определении функции в R. Я пытаюсь преобразовать содержимое цикла for
в функцию, чтобы я мог lapply
функцию в список, (и в свою очередь mclapply
с использованием пакета multicore
)
Мне нужно построчно строить фрейм данных, получая по одному тексту и одному числовому значению за раз из функции. Из предыдущего поста я понимаю, что я должен как-то возвращать значения из-за схемы передачи и копирования R, а не схемы передачи по ссылке (см .: Как добавить столбец во фрейме данных в функции
Вот упрощенная версия того, что я делаю:
letters <- c('aa', 'bb', 'cc', 'aa', 'bb', 'dd', 'cc', 'dd', 'ee', 'ee')
numbers <- 1:10
madeup <- data.frame(letters, numbers)
output <- data.frame()
functest <- function(x) {
subtest <- subset(madeup, letters==x)
if (nrow(subtest==2)){
calc <- subtest$numbers[2] - subtest$numbers[1]
...WHAT GOES HERE?...
}
}
Кто-нибудь знает, что я должен сделать, чтобы вернуть x
и calc
, чтобы я мог rbind
каждое из этих двух значений в новую строку output
фрейма данных?
Если я смогу скопировать эти два значения из функции, я представляю, что команда выполнения будет выглядеть примерно так: *
output <- rbind(output, [mc]lapply(letters, functest))
--- но я рад, что поправился!