r - 过滤掉 purr 中最长的字符串
问题描述
考虑这个例子
list('test', 'one')
我想对这个列表进行子集化,并且只保留列表中最长的字符串。使用purrr::keep
似乎不起作用。
> list('test', 'one') %>% keep(~ nchar(.x) == max(nchar(.)))
[[1]]
[1] "test"
[[2]]
[1] "one"
有任何想法吗?谢谢!
解决方案
如果l
已存储,则确实 base R 似乎最好:
l <- list('test', 'one')
# If you want only the first one or there is a unique element
l[which.max(nchar(l))]
# [[1]]
# [1] "test"
# General
l[nchar(l) == max(nchar(l))]
# [[1]]
# [1] "test"
现在keep
我们可以做
list('test', 'one') %>% keep(function(x) nchar(x) == max(nchar(.)))
# [[1]]
# [1] "test"
问题似乎是两者.
都.x
只是~ nchar(.x) == max(nchar(.))
.
推荐阅读
- c# - 仅设置 TLS 1.3 时无响应
- ios - 与控制中心相同的当前 ViewController 在 iPhone 中工作
- javascript - 编辑条目时电子应用程序不更新条目
- ruby-on-rails - Rails 6 中的 Rails 红色开发错误页面在哪里?
- go - 如何在for-select循环中更改频道
- javascript - Javascript Fetch 没有服务器消息
- angular - 需要帮助才能使用 Orange Money 的 API
- javascript - React native 无需权限即可访问相机或照片库
- c# - C# xamarin 表单中文件夹中的文件名?[安卓]
- python - 导入 ModuleNotFoundError:运行 sagemaker 管道步骤时没有名为 X 的模块