Я пытаюсь выяснить, как экспортировать не 1, а 2 значения, вычисленные внутри функции, используемой внутри summarise_all
library(tidyr)
library(dplyr)
library(data.table)
library(diptest)
funx <- function(x) {
logtest <- suppressWarnings(log10(x))
remaining <- length(logtest[which(!is.na(logtest) & is.finite(logtest))])
x <- if(remaining > 0.75*length(x)) {suppressWarnings(log10(x)) } else { x }
logchoice <- if(remaining > 0.75*length(x)) {'Y' } else { 'N' }
x <- x[which(!is.na(x) & is.finite(x))]
y <- diptest::dip.test(x[1:7200])
z <- y$p.value
# z <- list(pvalue = y$p.value, transform = logchoice) ## attempt at exporting 2 values from the function
return(z)
}
, так далеко я дошел до этого в моем эксперименте:
mtcars %>% sample_n(30) %>%
select(colnames(mtcars)[2:5]) %>%
summarise_all(list(~ list(funx(.)))) %>% gather %>% separate(value, c('pvalue', 'trans'), ',')
, что дает мне это:
key pvalue trans
1 cyl list(pvalue = 6.20997213685026e-06 transform = "T")
2 disp list(pvalue = 0.14200504058625 transform = "T")
3 hp list(pvalue = 0.0549071023871164 transform = "T")
4 drat list(pvalue = 0.0138972262215915 transform = "T")
или это, если я не называю элементы списка:
key pvalue trans
1 cyl list(0 "T")
2 disp list(0.112335716284263 "T")
3 hp list(0.0425200071960111 "T")
4 drat list(0.00752301601012173 "T")
, поэтому у меня такое чувство, что я идуна это неправильный путь.