Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
dplyr::mutate_at使用多个函数_R_Dplyr_Mutate - Fatal编程技术网

dplyr::mutate_at使用多个函数

dplyr::mutate_at使用多个函数,r,dplyr,mutate,R,Dplyr,Mutate,我可以在步骤中的单个mutate_中在同一列上连续使用多个函数吗,例如:(sqrt(log(x))) 库(dplyr) 车头(mtcars)%>% 选择(mpg,显示)%>% 变异_at(变量(mpg,disp) ,funs(sqrt))%>% 变异_at(变量(mpg,disp) ,funs(log)) #>mpg显示 #> 1 1.522261 2.537587 #> 2 1.522261 2.537587 #> 3 1.563380 2.341066 #> 4 1.531695 2.7

我可以在步骤中的单个mutate_中在同一列上连续使用多个函数吗,例如:(sqrt(log(x)))


库(dplyr)
车头(mtcars)%>%
选择(mpg,显示)%>%
变异_at(变量(mpg,disp)
,funs(sqrt))%>%
变异_at(变量(mpg,disp)
,funs(log))
#>mpg显示
#> 1 1.522261 2.537587
#> 2 1.522261 2.537587
#> 3 1.563380 2.341066
#> 4 1.531695 2.776480
#> 5 1.464262 2.943052
#> 6 1.447956 2.708050
我在尝试时得到这个

车头(mtcars)%>%
选择(mpg,显示)%>%
变异_at(变量(mpg,disp)
,funs(sqrt,log))
#>mpg disp mpg_sqrt disp_sqrt mpg_log disp_log
#> 1 21.0  160 4.582576  12.64911 3.044522 5.075174
#> 2 21.0  160 4.582576  12.64911 3.044522 5.075174
#> 3 22.8  108 4.774935  10.39230 3.126761 4.682131
#> 4 21.4  258 4.626013  16.06238 3.063391 5.552960
#> 5 18.7  360 4.324350  18.97367 2.928524 5.886104
#> 6 18.1  225 4.254409  15.00000 2.895912 5.416100

抱歉如果这是重复的q,请尝试搜索

您可以,但您需要这样做:

library(dplyr)

head(mtcars) %>% 
  select(mpg, disp) %>% 
  mutate_at(vars(mpg,disp)
            , funs(log(sqrt(.))))

       mpg     disp
1 1.522261 2.537587
2 1.522261 2.537587
3 1.563380 2.341066
4 1.531695 2.776480
5 1.464262 2.943052
6 1.447956 2.708050

您总是可以构建自己的函数并在
funs()
中运行它

require(tidyverse)
myFunc%
选择(mpg,显示)%>%
变异_at(变量(mpg,disp),funs(myFunc))

如果要保留原始列,请使用@phiver公式:

head(mtcars) %>% 
 select(mpg, disp) %>% 
    dplyr::mutate_at(.vars=c("mpg","disp")
        ,.funs=funs(logsqrt = log(sqrt(.)))) 

   mpg disp mpg_logsqrt disp_logsqrt
1 21.0  160    1.522261     2.537587
2 21.0  160    1.522261     2.537587
3 22.8  108    1.563380     2.341066
4 21.4  258    1.531695     2.776480
5 18.7  360    1.464262     2.943052
6 18.1  225    1.447956     2.708050

有些函数也可以是自定义函数。以上答案已被接受。谢谢你。
head(mtcars) %>% 
 select(mpg, disp) %>% 
    dplyr::mutate_at(.vars=c("mpg","disp")
        ,.funs=funs(logsqrt = log(sqrt(.)))) 

   mpg disp mpg_logsqrt disp_logsqrt
1 21.0  160    1.522261     2.537587
2 21.0  160    1.522261     2.537587
3 22.8  108    1.563380     2.341066
4 21.4  258    1.531695     2.776480
5 18.7  360    1.464262     2.943052
6 18.1  225    1.447956     2.708050