如果未提供,则跳过函数内部的参数

skip a parameter inside function if not provided

我创建了一个函数来重塑(透视)数据,但该函数的最后一部分是 cbind 将几列放入 df。

pivot_df <-  function(df, new_col, col1, col2, col3) {
     df_col_selected <- df[ , c(col1, col2, col3)]
     df_col_selected_reshaped <- reshape(
       df_col_selected, 
       idvar = col2, 
       timevar = col3,
       direction = "wide"
    )
     df_reshaped <-cbind(df_col_selected_reshaped, new_col, col1)
}

因此,如果我调用该函数并给出列的名称,它就会给出我想要的结果。

pivot_df(df, new_col, col1, col2, col3)

但我想在这个函数中有一个标志或 ifelse new_col。我的意思是new_col在最后cbind如果没有写在函数里的话会被跳过,像这样:

pivot_df(df, col1, col2, col3)

这仍然执行 df_reshaped <-cbind (df_col_selected_reshaped, new_col, col1) 但最后不会有 new_col

我知道我可以在没有 new_col 的情况下创建一个单独的函数,但我想要一个可以同时执行这两项操作的函数。谢谢

您可以将 new_col 设置为默认 NULL

pivot_df <-  function(df, new_col = NULL, col1, col2, col3) {
    df_col_selected <- df[ , c(col1, col2, col3)]
    df_col_selected_reshaped <- reshape(
        df_col_selected, 
        idvar = col2, 
        timevar = col3,
        direction = "wide"
    )
    if(!is.null(new_col)){
        df_reshaped <-cbind(df_col_selected_reshaped, new_col, col1)
    }else{
        df_reshaped <-cbind(df_col_selected_reshaped, col1)
    }
}