Я пишу функцию, которая передает дополнительный аргумент функции, если выполняется определенное условие, в противном случае оставьте этот аргумент пустым.
Приведенный ниже код является примером, на котором строится «Sepal.Length», и если fn_y
не равно NULL
, то аргумент цвета также будет передан в функцию (т. Е. Разделить график рассеяния в соответствии с fn_y
) .
fn_plotly <- function(fn_data, fn_x, fn_y){
if(is.null(fn_y)){
p <- plotly::plot_ly(data = fn_data, x = ~fn_data[[fn_x]],
type = "scatter")
} else {
p <- plotly::plot_ly(data = fn_data, x =~ fn_data[[fn_x]],
type = "scatter", color = fn_data[[fn_y]])
}
return(p)
}
fn_plotly(iris, "Sepal.Length", NULL)
fn_plotly(iris, "Sepal.Length", "Species")
Приведенный выше код работает, но мне было интересно, есть ли другой способ, который мог бы использовать функцию конвейера %>%
, чтобы написать код немного короче, то есть что-то вроде этого
plotly::plot_ly(data = fn_data, x =~ fn_data[[fn_x]],type="scatter") %>% ifelse(is.null(fn_y),"",color = fn_data[[fn_y]] )
Я хотел бы использовать эту функциональность не только на графике, поэтому, пожалуйста, не предлагайте мне использовать другие пакеты печати.