1

我对 R 很陌生,所以请原谅这里的任何 R 语法错误......

我在数据框(19 列)中保存了 19 个问题的李克特调查。响应是数字并转换为字符。

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

我当前的代码

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

我知道我可以在接下来的列“lik_02”、lik_03“……等等中重复这一点,但是我该如何更简洁地写这个呢?

我尝试 lapply 出现以下错误:

lik_tab <- lapply(lik_tab,factor(levels = c("1", "2", "3", "4", "5"),
+                                      ordered = TRUE))
Error in match.fun(FUN) : 
  'factor(levels = c("1", "2", "3", "4", "5"), ordered = TRUE)' is not a function, character or symbol

谢谢!

4

1 回答 1

3

如果我们用函数调用包装,使用匿名函数,同时分配给完整的数据集,使用[]来保持数据集的结构,否则,它将是listlapply

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)
于 2020-01-20T19:42:09.387 回答