楼主: qwertyqwertu
4804 10

[问答] 关于dplyr包(magrittr)中的管道函数%>% 如何在这个过程中赋值 [推广有奖]

  • 0关注
  • 0粉丝

高中生

70%

还不是VIP/贵宾

-

威望
0
论坛币
39 个
通用积分
28.3247
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
593 点
帖子
26
精华
0
在线时间
33 小时
注册时间
2017-12-16
最后登录
2024-7-9

楼主
qwertyqwertu 发表于 2018-5-20 01:26:21 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
  1. iris %>%
  2.     `<-`(a,.)
复制代码


  1. a <- iris
复制代码

完全不等价 前者无法赋值

  1. iris %>%
  2.     `<<-`(a,.)
复制代码

可以对a赋值,但是身为一个超赋值,如果当前环境及向上的环境直到global环境都没有叫a的变量的话,会在global环境产生这个a的变量。这样会对函数的定义产生问题,函数会污染外部变量空间。


于是 如何用 %>% 实现 a <- iris这个操作呢


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:过程中

沙发
qwertyqwertu 发表于 2018-5-20 01:34:24
另外 补充一下
  1. iris %>% assign('a',.,envir = parent.frame())
  2. iris %>% assign('a',.)
复制代码

这俩都不好使

藤椅
cheetahfly 在职认证  发表于 2018-5-21 08:19:52
magritter::`%<>%` 了解一下?

板凳
jgchen1966 发表于 2018-5-22 23:50:15
  “ Another  note is that special attention is advised when using non-magrittr operators in a pipe-chain
(+, -, $, etc.), as operator precedence will impact how the chain is evaluated. In general it is
advised to use the aliases provided by magrittr.”     引自《magrittr》

magrittr 没有对“<-"提供 一个  aliases  。。楼主想解决这类”特微妙“问题,可以先去解剖 magrittr 如何为一系列运算符编制 aliases 的。。

报纸
qwertyqwertu 发表于 2018-5-23 00:13:54
jgchen1966 发表于 2018-5-22 23:50
“ Another  note is that special attention is advised when using non-magrittr operators in a pipe- ...
  1. iris %>% .$Sepal.Length %>% `+`(.,1) %>% `/`(.,2)
复制代码
不是这样的吗?

地板
qwertyqwertu 发表于 2018-5-23 00:15:29
cheetahfly 发表于 2018-5-21 08:19
magritter::`%%` 了解一下?
这个只能赋值到最开始的那个变量 可不可以把中间的结果赋值到某个变量里呢?
类似于使用%T>%可以实现中途print结果 有没有可以做到中途保存结果的方法呢?

7
jgchen1966 发表于 2018-5-23 00:47:48
qwertyqwertu 发表于 2018-5-23 00:15
这个只能赋值到最开始的那个变量 可不可以把中间的结果赋值到某个变量里呢?
类似于使用%T>%可以实现中途 ...
楼主好象没有很好理解 magrittr 目标:
”  The magrittr is a package with two aims: to decrease development time and to improve readability and maintainability of code. Or even shortr: to make your code smokin' (puff puff)!
  想获得中间结果,其实很简单的:
一是,再开始一个新pipe;   二是 永远在数集tibble中操作,将中间结果作新变量,保存在数集中。
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
qwertyqwertu + 1 + 1 + 1 观点有启发

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

8
qwertyqwertu 发表于 2018-5-23 02:57:59
jgchen1966 发表于 2018-5-23 00:47
楼主好象没有很好理解 magrittr 目标:
”  The magrittr is a package with two aims: to decrease de ...
嘛 只能重开了吧 偶尔会有tbl表示不了的问题

9
jgchen1966 发表于 2018-5-25 00:44:33
qwertyqwertu 发表于 2018-5-23 02:57
嘛 只能重开了吧 偶尔会有tbl表示不了的问题
该停顿,透口气,就该停顿透口气,否则会窒息的,有违magrittr宗旨!!!

10
qwertyqwertu 发表于 2018-5-25 14:04:49
jgchen1966 发表于 2018-5-25 00:44
该停顿,透口气,就该停顿透口气,否则会窒息的,有违magrittr宗旨!!!
233好 谢谢

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-23 13:12