微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

尽管谓词为真,但对命名向量的名称使用 Filter 会返回一个空的命名向量?

如何解决尽管谓词为真,但对命名向量的名称使用 Filter 会返回一个空的命名向量?

考虑out<-setNames(sample(26,replace = T),letters)。通过构造,输出的元素之一必须命名为 a。但是,当我尝试 Filter(function(x) names(x)=="a",out) 时,我得到一个大小为 0 的命名数字。为什么会发生这种情况?

解决方法

函数 Filter 丢失了向量的命名信息(因为它在 lapply 内部使用了 out,这也丢失了这些信息)。

但是,您可以使用以下方法过滤名称:out[names(out) == "a"]。 结果是一个包含 6 且名称为 a 的向量。

,

这似乎是 Filter 中的一个错误。或者,至少,一种无证行为。函数参数 x 不是命名整数,names 属性被剥离:

Filter(function(x) {
  print(names(x))
  names(x) == "a"
},out)
#NULL
#NULL
#NULL
#NULL
# (... a total of 26 NULL's...)
#NULL
#NULL
#NULL
#NULL
#named integer(0)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。