多列上的R-有序因子

多列上的R-有序因子,r,factoring,R,Factoring,我对R非常陌生,所以请原谅这里的R语法错误 我有一个19个问题的likert调查,保存在一个数据框中(19列)。响应为数字并转换为字符 我想将Likert分数更改为因子并指定级别。我可以对每一列单独执行此操作,但我想知道如何使用循环将其应用于所有列,而不必对所有列重复这行代码19次 我当前的代码 lik_tab$lik_01 <- factor(lik_tab$lik_01, levels = c("1", "2", "3", "4",

我对R非常陌生,所以请原谅这里的R语法错误

我有一个19个问题的likert调查,保存在一个数据框中(19列)。响应为数字并转换为字符

我想将Likert分数更改为因子并指定级别。我可以对每一列单独执行此操作,但我想知道如何使用循环将其应用于所有列,而不必对所有列重复这行代码19次

我当前的代码

lik_tab$lik_01 <- factor(lik_tab$lik_01,
                          levels = c("1", "2", "3", "4", "5"),
                            ordered = TRUE)

lik_tab$lik_01如果我们使用函数调用包装,则使用匿名函数,同时在分配给完整数据集时,使用
[]
保留数据集的结构,否则,它将是
lappy
列表输出

lik_tab[] <- lapply(lik_tab, function(x) factor(x, 
                   levels = c("1", "2", "3", "4", "5"),
                                  ordered = TRUE))

lik_tab[]akrun的答案很好。我需要将因子列的子集转换为有序因子。我使用了
dataset[ordered_vars]@MehmetYildirim
lapply
的第二个选项,因为
apply
将data.frame转换为
matrix
,而matrix只能有一个类。它将强制它使用
字符
,并删除因子属性
lik_tab[] <- lapply(lik_tab, function(x) factor(x, 
                   levels = c("1", "2", "3", "4", "5"),
                                  ordered = TRUE))
lik_tab[] <- lapply(lik_tab, factor, levels = c("1", "2", "3", "4", "5"),
                                   ordered = TRUE)