r - 自定义函数上 purrr::map 中的列名匹配
问题描述
(使用虹膜进行再现)
我相信我的问题的措辞可以改进,但它是一个非常简单的问题,我需要返回n_distinct
ie 3 ifcolumn_name=="Species"
和 mean if others。另一部分效果很好,但我在 Species 列中收到 NA 作为输出,任何帮助我做错了什么。
library(tidyverse)
new_mean <- function(col_name) {
if(col_name=="Species")
{
return(n_distinct(col_name))
}
else
{
return(mean(col_name))
}
}
purrr::map_dfr(iris,new_mean)
解决方案
map
无权访问列名,imap
而是使用。
new_mean <- function(value, col_name) {
if(col_name=="Species")
return(dplyr::n_distinct(value))
else
return(mean(value))
}
purrr::imap_dfr(iris,new_mean)
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# <dbl> <dbl> <dbl> <dbl> <int>
#1 5.84 3.06 3.76 1.20 3
推荐阅读
- c# - 利用开闭原则 (SOLID)
- html - scss - 类中的@media 查询不适用于子选择
- c# - WebClient HTML 与 Chrome 视图不同
- database - 调用 OCI_Initialize() 时出现 SIGSEG 错误
- ios - 按下显示按钮时,如何在表格视图中获取重复的联系人?
- python - pywin32:GetFileVersionInfo 返回 1812
- android - 如何使用新的分页库实现 SwipeRefreshLayout
- ios - 如何在自动续订订阅中提供折扣
- cmd - 如何启用 VLC Player 自动重新连接到流。
- php - PDO MySQL 处理名称中的撇号 (')