gpt4 book ai didi

r - vapply 中的 FUN.VALUE 参数

转载 作者:行者123 更新时间:2023-12-04 11:31:04 24 4
gpt4 key购买 nike

我真的不明白 FUN.VALUE参数在 vapply .
这是我的例子:

a = list(list(1,2), list(1), list(1,2,3))

# give the lengths of each list in a
sapply(a, length)

现在,我尝试使用 vapply 使其类型安全而不是 sapply
# gives me same result as sapply
vapply(a, length, FUN.VALUE=1)

# same result, but why?
vapply(a, length, FUN.VALUE=1000)

# gives me error
vapply(a, length, FUN.VALUE="integer")

# gives me error
vapply(a, length, FUN.VALUE="vector")

# gives me error
vapply(a, length, FUN.VALUE=c(1,2))

来自 ?vapply我读到了 FUN.VALUE可以是标量、向量或矩阵,用于匹配输出的类型。关于原因的任何提示 vapply这样做?

最佳答案

来自 vapply文件,

FUN.VALUE (generalized) vector; a template for the return value from FUN. See ‘Details’.



请注意,它说的是“返回值的模板”,而不是“描述返回值的字符串”。查看详细信息部分提供了更多指导:

This function checks that all values of FUN are compatible with the FUN.VALUE, in that they must have the same length and type. [Emphasis added]



您示例中的函数 length()返回一个长度为 1 的数字(一个整数,如果我们想具体一点的话)。当您使用 FUN.VALUE = 1 , 1具有与您期望的输出相同的长度和类型,因此检查通过。当您使用 FUN.VALUE = "integer" , "integer"是长度为 1 的字符向量,因此长度检查通过但类型检查失败。

它继续:

(Types may be promoted to a higher type within the ordering logical < integer < double < complex, but not demoted.)



所以,如果你是 vapply对于可能返回整数或 double 值的函数,您应该确保指定类似 FUN.VALUE = 1.0 的内容。

文档继续讨论如何处理数组/矩阵。我不会在这里复制/粘贴它。

关于r - vapply 中的 FUN.VALUE 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51657605/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com