r - 地图功能中的波浪号运算符
问题描述
我对 R 中的 map 函数和波浪号运算符 '~' 有疑问
为什么这段代码只能这样工作:
iris_unique <- map(iris, ~length(unique(.)))
而不是例如这样
iris_unique <- map(iris, length(unique(iris$Sepal.Length)))
提前致谢
解决方案
map
假设您从包中谈论purrr
,此函数旨在将函数映射到向量上。
length(unique(iris$Sepal.Length))
是一个特定值(标准iris
数据集为 35),所以
iris_unique <- map(iris, length(unique(iris$Sepal.Length)))
相当于
iris_unique <- map(iris, 35)
因为35
不是一个函数,这可能不是你的意思。然而map()
,试图理解它。文档说,如果为函数参数传递一个“字符向量、数字向量或列表,它将被转换为提取函数”,这意味着它35
被转换为函数function(x){x[35]}
,因此最终结果是提取第 35个的观察iris
。
另一方面,该文档还描述了它如何将公式转换为函数。据此,公式~length(unique(.))
被翻译成函数function(x){length(unique(x))}
。由于这是一个函数,因此将其映射到列表或向量上非常有意义。
推荐阅读
- docker - Ubuntu 18.04 的存储库问题
- javascript - 截断不带断词的字符串
- reactjs - 将项目添加到 React 全局状态不起作用?
- python - 在 pandas 中找到 10 年来价值最高的 15 分钟
- javascript - 当我最小化屏幕时,html页面被限制并且divs滑动
- javascript - php看不到简单的ajax post变量
- python - 在具有可变文件数的 bash 脚本中使用 pygount
- terraform - 使用 terraform paln 时出现 Terraform 版本问题
- reactjs - 分叉的 NPM 包在生产中不起作用
- python - 使用 python-vlc 播放文件后,VLC 播放器窗口消失