使用dplyr进行函数编程:函数内的列到行名()

使用dplyr进行函数编程:函数内的列到行名(),r,function,dplyr,R,Function,Dplyr,我想使用函数将数据帧的第一列设置为行名。我试图在函数中包含列到行名()。这是我的初步尝试(咨询后) 我试着用“表达式”(grp)替换!!grp_变量: col_to_row <- function(df, grp_var){ require(dplyr) grp_var <- enquo(grp_var) df %>% column_to_rownames(var = !!grp_var) } 我尝试了一种使用base R的解决方案: col_to_ro

我想使用函数将数据帧的第一列设置为行名。我试图在函数中包含列到行名()。这是我的初步尝试(咨询后)

我试着用“表达式”(grp)替换!!grp_变量:

col_to_row <- function(df, grp_var){
  require(dplyr)
  grp_var <- enquo(grp_var)

  df %>% column_to_rownames(var = !!grp_var)
}
我尝试了一种使用base R的解决方案:

    col_to_row_base <- function(df, grp_var){
      df2 <- df[,-1]
      print(df2) # for debugging
      print(df[,1]) # for debugging
      row.names(df2) <- df[,1]
    }

col\u to\u row\u base行名称并不是一个好的做法,但如果必须这样做:

col_to_row_base <- function(df, names_col) {
    col_idx <- which(names(df) == names_col)
    df2 <- df[, -col_idx, drop = FALSE]
    row.names(df2) <- df[, col_idx]
    df2
}

col\u to\u row\u base基本情况不起作用,因为如果有两列data.frame
df2
 Error in is_quosure(e2) : argument "e2" is missing, with no default
    col_to_row_base <- function(df, grp_var){
      df2 <- df[,-1]
      print(df2) # for debugging
      print(df[,1]) # for debugging
      row.names(df2) <- df[,1]
    }
 Error in `.rowNamesDF<-`(x, value = value) : invalid 'row.names' length 
col_to_row_base <- function(df, names_col) {
    col_idx <- which(names(df) == names_col)
    df2 <- df[, -col_idx, drop = FALSE]
    row.names(df2) <- df[, col_idx]
    df2
}