首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在dplyr内使用`dplyr‘::transmute

在dplyr内使用`dplyr‘::transmute
EN

Stack Overflow用户
提问于 2017-10-02 07:01:17
回答 1查看 753关注 0票数 1

“对于哪个数字xy,在十进制数字系统中表示为6x12y的数字除以45 ?”

当然,下面不是和我的同龄人讨论的解决方案,而是试图在R中测试我的技能,然而,最后一行并没有做我想做的事情。

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

我用这个得到了想要的结果。但我在上一次的错误是什么呢?

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

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-02 08:13:59

你需要把你的行动划成一行。因此,在管道中添加rowwise()条件将修复它,即

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

给出了预期的结果

资料来源:本地数据帧3 x 1组:#A tibble: 3 x 1 x_y 1 0 2 9 0 3 4 5

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46520796

复制
相关文章

相似问题

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