У меня есть список data.frame как вход для моей пользовательской функции, я ожидаю, что пользовательская функция вернет несколько списков data.frame. Я сделал некоторые изменения кода в своей функции, но возвратил неожиданный вывод. Может ли кто-нибудь предложить мне, как улучшить код в пользовательской функции? Где я ошибался в своем коде? Любой намек?Как эффективно перебирать список data.frame как вход для пользовательской функции?
данные
myList <- list(
foo = data.frame(start=seq(1, by=4, len=6), stop=seq(3, by=4, len=6)),
bar = data.frame(start=seq(5, by=2, len=7), stop=seq(7, by=2, len=7)),
bleh = data.frame(start=seq(1, by=5, len=5), stop=seq(3, by=5, len=5))
)
пользовательские функции необходимость в оптимизировано:
func <- function(set) {
# check input param
stopifnot(is.list(set))
output <- list()
require(dplyr)
for(id in 1: seq_along(set)) {
entry <- set[[id]]
self_ <- setdiff(entry, entry)
res <- lapply(set[-id], function(ele_) {
joined_ <- setdiff(entry, ele_)
})
ans <- c(list(self_), res)
names(ans) <- c(names(set[id]),names(set[-id]))
output[id] <- ans
}
return(output)
}
желаемый результат
Я ожидаю, что моя пользовательская функция будет возвращать несколько список из data.frame object.Can кто-нибудь дать мне какая-то идея? Спасибо
Что именно должен делать 'func'? Не обращайте внимания на его формат вывода на данный момент; какой расчет вы пытаетесь выполнить на входе? – jdobres
* «всегда использовать список скучно» * ??? Что ты хочешь этим сказать? Списки эффективны и гибки. Вы можете дать им интересные имена, если это сделает вас счастливее. * «Какая структура data.structure в R более подходит для хранения очень большого большого списка data.frame» * в базе R, есть две структуры, которые могут иметь в себе списки фреймов данных: списки и среды. Помимо * скуки *, каковы ваши проблемы с использованием списков? – Gregor
Ваш пример не воспроизводится. «Улучшенная» функция, похоже, ничего не делает. Мой ответ касается намерения вашего первоначального примера. Я не могу дать вам более конкретный ответ, потому что вашего примера недостаточно. Мы не можем читать ваши мысли. – jdobres