“哪一个4位数乘以4,就倒过来了?”
下面是一个用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))第二种做法是:
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吗?
发布于 2017-10-08 10:45:12
您可以将最后一次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 = "")))https://stackoverflow.com/questions/46630100
复制相似问题