2017-10-08 9 views
1

"4を乗じた4桁の数字は、それ自体が反転していますか?"dplyr :: mutate内で `apply`の代わりに` map`を使用

expand.grid(replicate(4, 0:9, simplify = FALSE)) %>% 
    filter(Var1 !=0, Var4 !=0) %>% 
    transmute(newcol=as.numeric(do.call(paste0,.))) %>% 
    filter(newcol<2500) %>% 
    mutate(newcol2=4*newcol) %>% 
    filter(newcol==apply(.[c("newcol2")],1,function(x) paste0(floor(x/ 10^(0:(nchar(x) - 1))) %% 10,collapse=""))) 

はあなたがpurrr::map代わりのapplyを使用する方法私を見ることができます:ここで

はR

library(tidyverse) 
library(stringi) 

expand.grid(replicate(4, 0:9, simplify = FALSE)) %>% 
    filter(Var1 !=0, Var4 !=0) %>% 
    transmute(newcol=as.numeric(do.call(paste0,.))) %>% 
    filter(newcol<2500) %>% 
    mutate(newcol2=4*newcol) %>% 
    filter(newcol==stri_reverse(newcol2)) 

第二のアプローチはこれでしたを使用して、この比較的簡単な数学の問題を解決するための試みであります最後のステップ?

答えて

3

最後のfilterコールは、次のように変更できます。

filter(newcol == map(newcol2, ~paste0(floor(./ 10^(0:(nchar(.) - 1))) %% 10, collapse = ""))) 

またはこの

filter(newcol == map_chr(newcol2, ~paste0(floor(./ 10^(0:(nchar(.) - 1))) %% 10, collapse = ""))) 
関連する問題