Я строю структуру dplyr
для запуска некоторых пользовательских функций над столбцами кадра данных в 1 блоке кода
В настоящее время моя функция выглядит следующим образом
funx <- function(x) {
logchoice <- if(max(x) < 400) {'T' } else { 'F' }
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 }
x <- x[which(!is.na(x) & is.finite(x))]
y <- diptest::dip.test(x)
z <- tibble(pvalue = y$p.value, Transform = logchoice)
return(z)
}
и структура dplyr
выглядит следующим образом:
mtcars %>%
sample_n(30) %>%
select(colnames(mtcars)[2:5]) %>%
summarise_all(list(~ list(funx(.)))) %>%
gather %>%
unnest %>%
arrange(pvalue) %>%
rename(Parameter = key)
, что дает мне:
Parameter pvalue Transform
1 cyl 0.00000000 T
2 drat 0.03026093 T
3 hp 0.04252001 T
4 disp 0.06050505 F
Я хотел бы знать, как получить доступ к имени столбца внутри моей функции, главным образом потому, что я хотел бы изменить имя в таблице результатов, чтобы оно выглядело как результат этого: paste(original_column_name, 'log10', sep = '')
если функция применяет преобразование журнала , но оставьте оригинальное имя как есть, когда оно решит не делать этого.
так что ожидаемый результат:
Parameter pvalue Transform
1 log10_cyl 0.00000000 T
2 log10_drat 0.03026093 T
3 log10_hp 0.04252001 T
4 disp 0.06050505 F