2017-10-02 13 views
1

" xyの数字の場合、十進数表記が6x12yの数字は、45で分けられますか? "dplyr :: transmuteの中で `paste`を使用

以下は私のドウターと議論した解決策ではなく、Rで自分のスキルをテストしようとする試みです。しかし、最後の行は私がしたいことをしません。

library(tidyverse) 
library(stringi) 

replicate(2, 0:9, simplify = FALSE) %>% 
    expand.grid() %>% 
    as.tibble() %>% 
    transmute(newcol=do.call(paste0,list(6,Var1,12,Var2))) %>% 
    map_df(as.numeric) %>% 
    filter(newcol%%45==0) %>% 
    transmute(x_y=paste(stri_sub(newcol,c(2,5),c(2,5)),collapse = " ")) 

これを使用して希望の結果が得られました。しかし、以前の私の間違いは何ですか?

replicate(2, 0:9, simplify = FALSE) %>% 
    expand.grid() %>% 
    as.tibble() %>% 
    transmute(newcol=do.call(paste0,list(6,Var1,12,Var2))) %>% 
    map_df(as.numeric) %>% 
    filter(newcol%%45==0) %>% 
    transmute(x_y=map2_chr(stri_sub(newcol,2,2),stri_sub(newcol,5,5),paste)) 

答えて

1

操作を行方向にする必要があります。このように、あなたのパイプでrowwise()条件を追加すると、それを修正する、すなわち

期待される結果を与える
library(tidyverse) 

replicate(2, 0:9, simplify = FALSE) %>% 
    expand.grid() %>% 
    as.tibble() %>% 
    transmute(newcol=do.call(paste0,list(6,Var1,12,Var2))) %>% 
    map_df(as.numeric) %>% 
    filter(newcol%%45==0) %>% 
    rowwise() %>% # <--- Added the rowwise 
    transmute(x_y=paste(stri_sub(newcol,c(2,5),c(2,5)),collapse = " ")) 

Source: local data frame [3 x 1] 
Groups: <by row> 

# A tibble: 3 x 1 
    x_y 
    <chr> 
1 0 0 
2 9 0 
3 4 5 
関連する問題