【发布时间】:2017-02-14 19:18:45
【问题描述】:
假设我有 6 列的数据框(它们都是无序因子)。
teacher$TC001Q01NA TC026Q01NA TC026Q02NA TC026Q04NA TC026Q05NA TC026Q06NA
1 <NA> <NA> <NA> <NA> <NA> <NA>
2 Female Strongly agree Strongly agree Strongly disagree Strongly agree Strongly disagree
3 Male Agree Agree Disagree Agree Disagree
4 Female Agree Agree Disagree Agree Agree
5 Female Agree Agree Strongly disagree Strongly agree Strongly disagree
6 <NA> <NA> <NA> <NA> <NA> <NA>
7 <NA> <NA> <NA> <NA> <NA> <NA>
8 Female Strongly agree Agree Strongly disagree Agree Agree
9 <NA> <NA> <NA> <NA> <NA> <NA>
10 <NA> <NA> <NA> <NA> <NA> <NA>
我想将第 2-6 列设为有序因子变量。
我知道如何为每个变量分别做:df_new$TC026Q01NA <- as.ordered(df_new$TC026Q01NA)
但是如何在一(两)行代码中对所有变量执行此操作?
【问题讨论】:
-
lapply会成为你的朋友,我猜 -
我们可以
df_new[2:6] <- lapply(df_new[2:6], function(x) as.ordered(x)) -
@akrun 谢谢你的评论!请您解释一下,为什么您的代码将 df_new 保留为 data.frame,但代码 lapply(df_new[2:6], as.ordered) 将其转换为列表?
-
[]确保<-的 lhs 上的结构已恢复,data.frame是具有相同数量元素的list