我有一个有序因子向量列表,我想在列表的每个元素中找到最低级别。这是一个使用 sapply
的简单练习,但我是在一个函数中执行此操作,因此为了安全起见,我想使用 vapply
。问题是,使用 vapply
总是返回一个整数向量,我不知道如何指定 FUN.VALUE
以便它返回一个因子。有办法吗?
lvls <- ordered(letters)
fac1 <- factor(c("b", "a", "c"), levels = lvls, ordered = TRUE)
fac2 <- factor(c("f", "z", "m"), levels = lvls, ordered = TRUE)
fac3 <- factor(c("p", "d", "q"), levels = lvls, ordered = TRUE)
fac_list <- list(fac1, fac2, fac3)
sapply(fac_list, min) ## Works
## [1] a f d
## Levels: a b c d e f g h i j k l m n o p q r s t u v w x y z
vapply(fac_list, min, FUN.VALUE = factor("a", levels = lvls))
## [1] 1 6 4
最佳答案
(我更愿意将此作为对您帖子的评论)
如果我理解正确
lvls[vapply(fac_list, min, FUN.VALUE = factor('a',levels = lvls))]
> lvls[vapply(fac_list, min, FUN.VALUE = factor('a',levels = lvls))]
[1] a f d
Levels: a < b < c < d......
将是您问题的“hacky”解决方案。
关于r - 在因子列表上使用 vapply,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34754173/