[英]Function in tidyverse
我想用中间 function 创建 tidyverse。 我有一个结构
temp1 = sapply(df, function(x) .....)
temp2 = sapply(temp1, function(x) .......... )
temp3 = sapply(df, function(x) ..........)
temp = data.frame(temp2/temp3)
我想得到这样的东西
sapply(df, function(x) .......) %>% sapply(df, function(x) ....... )
%>% ......
可重现的例子:
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)
据我所知,pipe 运算符不记得链的第一个块,只记得前一个块,因此您必须使用中间步骤。
但是,您可以将代码的第一部分简化为管道:
temp1 = df %>% sapply(function(x) x*3) %>% sapply(function(x) x+4)
temp = temp1/sapply(df, function(x) x/4)
假设您在每一列上执行的函数比显示的函数更复杂,您可以使用purrr
函数,例如:
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
您可以使用括号包裹整个 pipe 链并将其用作数据框。
(df %>% sapply(., function(x) x*3) %>% sapply(., function(x) x+4 )) /
(df %>% sapply(., function(x) x/4) )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.