首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tidyverse中的函数

tidyverse中的函数
EN

Stack Overflow用户
提问于 2019-10-03 16:08:30
回答 2查看 129关注 0票数 3

我是tidyverse的一名新手。我想创建具有中间函数的tidyverse。我有一个结构,如

代码语言:javascript
复制
temp1 = sapply(df, function(x) .....)
temp2 = sapply(temp1, function(x) .......... )
temp3 = sapply(df, function(x) ..........)
temp = data.frame(temp2/temp3)

我想要得到这样的smth

代码语言:javascript
复制
sapply(df, function(x) .......) %>% sapply(df, function(x) ....... )
 %>% ......

P.S. Ronak Shah要求提供可重现的例子

代码语言:javascript
复制
df = data.frame(a = c(1,2,3), b = c(1,2,3))
temp1 = sapply(df, function(x) x*3)
temp2 = sapply(temp1, function(x) x+4 )
temp3 = sapply(df, function(x) x/4)
temp = data.frame(temp2/temp3)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-03 17:05:06

假设您要对每一列执行比所示更复杂的函数,则可以使用purrr函数,例如:

代码语言:javascript
复制
library(purrr)

map2_df(map(df, ~.x * 3 + 4), map(df, ~.x/4), `/`)

#    a     b
#  <dbl> <dbl>
#1  28    28  
#2  20    20  
#3  17.3  17.3
票数 1
EN

Stack Overflow用户

发布于 2019-10-03 17:02:54

据我所知,管道操作员不记得链的第一个块,只记得前一个块,所以你必须使用一个中间步骤。

但是,您可以将代码的第一部分简化为管道:

代码语言:javascript
复制
temp1 = df %>% sapply(function(x) x*3) %>% sapply(function(x) x+4)
temp = temp1/sapply(df, function(x) x/4)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58214895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档