我已经创建了一个重塑(pivot)数据的函数,但函数的最后一部分是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
的情况下创建一个单独的函数,但是我希望有一个函数可以同时执行这两个函数。感谢
答案 0 :(得分:1)
您可以将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)
}
}
作为默认值:
z-index: 0 !important;