【发布时间】:2017-08-06 15:18:04
【问题描述】:
我正在尝试关注good practice 并在函数内部使用vapply() 而不是sapply(),但是发现vapply() 的类型检查在需要固定长度时太不灵活了。
假设我想要这样的东西:
list1 <- list(l1_one = 1:3, l1_two = letters[1:3])
list2 <- list(l2_one = 4:6, l2_two = letters[4:6], l2_three = 10:12)
list_12 <- list(list1, list2)
sapply(list_12, names)
# [[1]]
# [1] "l1_one" "l1_two"
#
# [[2]]
# [1] "l2_one" "l2_two" "l2_three"
有没有办法允许可变长度,但检查返回是否为“字符”模式,并且长度至少为一个?显然这不起作用:
vapply(list_12, names, character(2))
# Error in vapply(list_12, names, character(2)) : values must be length 2,
# but FUN(X[[2]]) result is length 3
【问题讨论】:
-
不,使用 vapply 是不可能的。如果您想要检查,请编写一个包含它们的函数。