我有一个有序因子向量列表,我想在列表的每个元素中找到最低级别。这是一个使用 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/

10-12 20:11