unnest_wider 仅当 R 中存在列时

unnest_wider only if columns exists in R

我想unnest_wider有条件地根据数据中是否存在列。如果该列存在,那么它应该 unnest_wider,但如果不存在,那么它不应该做任何事情。我希望我可以做类似的事情:

df1 <- tibble(letters = c('a', 'b', 'c'), values1 = list(1:2, 3:4, 5:6))  

# works
df1 %>% unnest_wider(values1, names_repair = ~gsub('...', 'values1_', ., fixed = TRUE)) 

# doesn't work
df1 %>% unnest_wider(across(any_of("values2")), names_repair = ~gsub('...', 'values1_', ., fixed = TRUE)) 

我知道为什么最后一行代码不起作用,但我想完成类似的事情。谢谢

这样的东西行得通吗:

conditional_unnest <- function(df, var){
  if(var %in% names(df)){
    return(unnest_wider(df, var, names_repair = ~gsub('...', 'values1_', ., fixed = TRUE)))
  } else{
    return(df)
  }
}

df1 %>%
  conditional_unnest("values1")