関数で 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"
関数が失敗しているに違いない理由