【发布时间】:2012-03-12 14:00:45
【问题描述】:
我在R 中使用sapply() 函数遇到了一个奇怪的行为。这个函数应该返回一个向量,但在给它一个空向量的特殊情况下,它会返回一个列表。
使用向量的正确行为:
a = c("A", "B", "C")
a[a == "B"] # Returns "B"
a[sapply(a, function(x) {x == "B"})] # Returns "B"
使用 NULL 值的正确行为:
a = NULL
a[a == "B"] # Returns NULL
a[sapply(a, function(x) {x == "B"})] # Returns NULL
空向量的奇怪行为:
a = vector()
a[a == "B"] # Returns NULL
a[sapply(a, function(x) {x == "B"})] # Erreur : type 'list' d'indice incorrect
与此语句相同的错误消息:
a[list()] # Erreur dans a[list()] : type 'list' d'indice incorrect
为什么?是bug吗?
由于这种奇怪的行为,我使用unlist(lapply())。
【问题讨论】:
-
Protip-它从来都不是错误
-
@ChrisBeeley - 从来不是一个错误,总是一个“功能”;-) R(和 S)有一堆不太理想的“功能”,这就是其中之一。
1:0是另一个...
标签: r