0

関数で fct_recode を使用しようとしていますが、「エラー:f要素 (または文字ベクトル) である必要があります」というエラーが表示されます。

編集:これを実行すると、これを関数に組み込む方法がわからないまま直接動作します

  df[,"c1"] <- as.character(df$c1)
  df[,"c1"] <- fct_recode(df$c1,
                               "Female" = "2",
                               "Male" = "1")

df[,c1] を df$c1 に変更したときに機能しましたが、これを再コード関数に組み込む理由と方法がわからない

私が試しているコード

recode <- function(data, var1) 
  {
       data[,var1]
       data[,var1] <- as.character(data[,var1])
       data[,var1] <- fct_recode(data[,var1],
                                  "Yes" = "1",
                                 "No" = "2")
       data[,var1] <- fct_explicit_na(data[,var1],"No")
       return(data)
  }

recode(df,"c1")

以下のコマンドを使用して見つかった df データセットの c1 列の構造 (大きなデータセットであるため、1 つの列の dput を共有します。問題がある場合はお知らせください)

df[,"c1"] %>% head(10) %>% dput()

structure(list(c1 = c(2, 1, 2, 1, 1, 2, 2, 1, 1, 2)), notes = c("b15 urinary creatinine is in mg/dl", 
"3", "the province variable is related to province", "the stratum variable is about urban and rural classification"
), row.names = c(NA, -10L), class = c("tbl_df", "tbl", "data.frame"
))

str(df$c1) #gives below output
num [1:5610] 2 1 2 1 1 2 2 1 1 2 ...
 - attr(*, "label")= chr "C1"
 - attr(*, "format.stata")= chr "%10.0g"

関数が失敗しているに違いない理由

4

1 に答える 1