我有以下的數據集,其中包括2個變量:EVAL分析是不是在我的功能正常工作
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"
))
我有以下功能標籤和級別添加到現有的數據集:
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
}
由該R命令運行的
:
Add_Labels_Level_To_Dataset(dt4, "dt4", level_list, labels_list)
在R命令中提供的列表是fo llowing的,這表示每個變量的有序水平的數據集分別爲:
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))
你能幫忙嗎?
我投了你的性反應作爲一種更優雅/高效/更短的答案。然而,當我應用你的R命令時,爲什麼str()命令說的是因素而不是ord.factors - 當應用我的R命令時,它說ord.factors @Marcelo? –
@Elias我已經更新了答案。將'SIMPLIFY = F'添加到'mapply'將保留排序的因子類別。 – Marcelo