では正常に動作していない私は、2つの変数が含まれ、次のデータセットがいる:evalの解析には、私の機能
Add_Labels_Level_To_Dataset <- function(df, df_name,levels_list,labels_list) {
df[] <- lapply(df, ordered)
for (i in 1:length(colnames(df))) {
arg0<-paste0(df_name,"[i]", "<-ordered(", df_name, "$'", colnames(df)[i], "', levels=c(", levels_list[[i]], "), labels = c(", labels_list[[i]],"))" )
eval(parse(text=arg0))
}
df
}
:
dt4<-structure(list(a1 = c(4L, 4L, 3L, 4L, 4L), a2 = c(1L,
3L, 4L, 5L, 4L)), .Names = c("a1", "a2"
), row.names = c(NA, -5L), class = c("tbl_df", "tbl", "data.frame"
))
を私は既存のデータセットにラベルやレベルを追加し、以下の機能を持っていますそのRコマンドによって実行される
:
Add_Labels_Level_To_Dataset(dt4, "dt4", level_list, labels_list)
Rコマンドで提供されるリストは、foそれぞれデータセット内の各変数の順序付きレベルを表しています。
label_list=list("'S','SA','SB','SC,'SD'", "'S','SA','SB','SC,'SD'")
level_list=list("5,4,3,2,1", "5,4,3,2,1")
なぜ私の機能が正しく動作していませんか? 私は何が間違っているのか知りません! Rコマンドの外でRコマンドを実行すると、レベル/ラベルを与えられたデータセットに結び付けます。しかし、R関数を実行すると、これは起こりません!
df_name="dt4"
df=dt4
levels_list=level_list
labels_list=label_list
i=3
df[] <- lapply(df, ordered)
arg0<-paste0(df_name,"[i]", "<-ordered(", df_name, "$'", colnames(df)[i], "', levels=c(", levels_list[[i]], "), labels = c(", labels_list[[i]],"))" )
eval(parse(text=arg0))
助けてもらえますか?
を私はもっとエレガント/効率的/短い答えとしてあなたのresponceを可決しました。しかし、なぜ私はあなたのRコマンドを適用したときにstr()コマンドが要因とord.factorsではないと言う - 私のRコマンドを適用すると、ord.factors @マーセル? –
@Elias答えを更新しました。 'mapply'に' SIMPLIFY = F'を加えると、順序付けられた因子クラスが保存されます。 – Marcelo