首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在dplyr中使用`mutate‘而不是’`apply`‘::mutate

在dplyr中使用`mutate‘而不是’`apply`‘::mutate
EN

Stack Overflow用户
提问于 2017-10-08 10:33:59
回答 1查看 587关注 0票数 1

“哪一个4位数乘以4,就倒过来了?”

下面是一个用R来解决这个相对简单的数学问题的尝试

代码语言:javascript
复制
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))

第二种做法是:

代码语言:javascript
复制
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吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-08 10:45:12

您可以将最后一次filter调用更改为以下内容。

代码语言:javascript
复制
filter(newcol == map(newcol2, ~paste0(floor(./ 10^(0:(nchar(.) - 1))) %% 10, collapse = "")))

或者这个

代码语言:javascript
复制
filter(newcol == map_chr(newcol2, ~paste0(floor(./ 10^(0:(nchar(.) - 1))) %% 10, collapse = "")))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46630100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档