[分享] magrittr補充說明

作者: celestialgod (天)   2015-12-31 13:37:18
※ [本文轉錄自 Statistics 看板 #1MTMWLYa ]
作者: celestialgod (天) 看板: Statistics
標題: Re: [問題] 中央極限定理
時間: Sat Dec 19 22:22:06 2015
應A大要求,解釋一下程式
library(magrittr) # 載入%>%跟%T>%運算子
# %>% 解釋
# 現在有一個函數f,有一個input,假設為a
# 一般上,我們可以使用f(a)得到回傳值
# 而%>% 可以把LHS當作RHS的函數的第一個input
# 因此,透過 a %>% f 或是 a %>% f() 都等同於 f(a)
# 同理,如果現在還有一個函數g,有兩個input,x跟y
# g(x,y)等同於 x %>% g(y)
# 但是如果我們想要讓他指定第二個位置呢?這時候就要透過 .跟{}實現
# .就是LHS的代替符號,所以其實 a %>% f() 等同於 a %>% f(.)
# 所以我們可以g(x,y)寫成 y %>% {g(x, .)}
# 其中{}的功能是建立一個block,不直接傳導引數到函數的第一個input
# 而%>%最大的好處是節省temporary variable
# 像是我現在x = f(a), z = g(x, y),我最後只要z的話
# 可以直接寫成 z = a %>% f %>% g(y),這一個可能需要花一點時間體會
# %T>% 解釋
# 其實就是只做傳導的%>%,不做回傳動作。
# 寫 b <- a %T>% f 的話就是b會等於a,而R console會列出f(a)的值
# 根據這個特性如果我寫成 b = 1:5 %T>% plot
# b會等於1, 2, 3, 4, 5,而圖也會同時出現
我這裡用另外一種方式去解釋%>%跟%T>%,我之前曾在R_Language寫過相關的文章
之前寫的時候用另一個方向去寫,也可以參考看看,附上我之前寫的文章:
https://www.ptt.cc/bbs/R_Language/M.1437452331.A.CD1.html
dat = rep(c(90:98, 5), 10) # 創建母體,5分、90~98分各10人
x <- 1e4 %>% replicate(mean(sample(dat, 50))) %T>%
{
qqnorm(.)
qqline(.)
}
其實把上面這段用一般寫法就會變成:
x <- replicate(1e4, mean(sample(dat, 50)))
qqnorm(x)
qqline(x)
※ 引述《allen1985 (我要低調 拯救形象)》之銘言:
: ※ 引述《baltimore (WYC)》之銘言:
: : 我想請教一個問題,我是大一的學生,最近看到中央極限定理非常搞不懂,我看到老師的
: : 講義寫說不論母群的分佈為何,只要n夠大,樣本平均數的抽樣分佈一定接近常態分配。
: : 但是假設有一個考試成績是這樣:95%學生成績是90分以上,1%學生成績10分以下,這樣還
: : 會是接近常態分配嗎?我一直覺得很怪,之前有關中央極限定理的文我有看過但是看不懂
: : @@還有我是心理系的,不知道我學的跟統計系的相比是不是有所增減,謝謝
: : 另外我應該會常常上來問問題XD 麻煩各位版友了
: 小弟我對於中央極限定理 雖然很久以前就聽過了 但也並非了解得十分透徹
: 前面推文中 提到了一些 此定理的必要條件 非常的嚴謹 非常的好
: 但我想對於一個大一生 可能有聽沒辦法懂 畢竟可能連積分都還不會 何況是動差
: 所以我希望原po能知道 你原先的敘述很不完整 如果想知道更清楚的
: 如果有哪些名詞不懂的 歡迎再問
: 不曉得可不可以利用以下實驗 讓原po對中央極限定理更有概念
: 這只是我腦中閃過的念頭 希望此實驗沒有太大問題
: 首先 我們可以假設 母體總共有100個學生成績好了
: 90分10個 91分10個 92分10個 93分10個 94分10個
: 95分10個 96分10個 97分10個 98分10個 5分10個
: 請原po每次隨機抽樣 50個學生的成績 算其平均數 總共抽個10次
: 然後 看看這10次平均數分配會不會有點像常態
: 我不知道結果會不會像 希望對原po有一些幫助
作者: allen1985 (我要低調 拯救形象)   2014-12-19 22:36:00
感謝 原本雖然我不知道這你的code怎麼運作但我知道 sample 怎麼運作 所以我可以稍微改一下感謝 我又學到新東西了 嘿嘿
作者: celestialgod (天)   2014-12-31 13:37:00
轉錄過來收精華

Links booklink

Contact Us: admin [ a t ] ucptt.com