美文网首页
88.关于map()函数系列的shortcut以及于apply(

88.关于map()函数系列的shortcut以及于apply(

作者: 心惊梦醒 | 来源:发表于2021-11-22 19:55 被阅读0次

【上一篇:87.关于map()函数系列】
【下一篇:89.关于safely()、possibly()和quietly()函数】

    意会......

map()函数系列的shortcut

> models <- mtcars %>% 
  split(.$cyl) %>% 
  map(function(df) lm(mpg ~ wt, data = df))
. 代表当前元素
匿名函数:function(df) lm(mpg ~ wt, data = df)

> models <- mtcars %>% 
  split(.$cyl) %>% 
  map(~lm(mpg ~ wt, data = .))

. 代表列表的当前元素
单边公式:~lm(mpg ~ wt, data = .)

> models %>% 
  map(summary) %>% 
  map_dbl(~.$r.squared)

split(.$cyl)不加~是因为split()函数中的参数是factor而不是公式
.$cyl、.$r.squared是一个整体,加上~才是公式

> models %>% 
  map(summary) %>% 
  map_dbl("r.squared")

map_dbl函数的公式参数可以是character vector

与appy()族函数的比较

    map()和lapply()是最相似的,输入都是Vector(List或atomic vetor),输出也全部是List。lapply()的FUN参数不能用单边公式和shortcut,而map()可以,因此后者的书写也更简简洁。
    vapply()函数需要通过FUN.VALUE参数给定一个输出的模板(向量),而map()函数系列可以通过函数名中的类型直接输出对应数据类型的结果,例如:vapply(df, is.numeric, logical(1))等价于map_lgl(df, is.numeric)。vapply()可以输出matrices,而map()只能输出vector。

【上一篇:87.关于map()函数系列】
【下一篇:89.关于safely()、possibly()和quietly()函数】

相关文章

网友评论

      本文标题:88.关于map()函数系列的shortcut以及于apply(

      本文链接:https://www.haomeiwen.com/subject/eazptrtx.html