Re: [問題] 關於by()

看板R_Language作者 (天)時間10年前 (2015/10/11 15:25), 10年前編輯推噓0(002)
留言2則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《genki358 (Dark Joker)》之銘言: : [軟體熟悉度]: : 入門(寫過其他程式,只是對語法不熟悉) : [問題敘述]: : 問題一: : 照著R in Action第134頁執行下列程式碼時,會出現錯誤訊息。 : vars <- mtcars[c("mpg","hp","wt")] : dstats <- function(x)(c(mean=mean(x),sd=sd(x))) : by(mtcars[vars],mtcars$am,dstats) : (list) object cannot coerced to type 'double' : In addition:Warning message: : In mean.default(x):argument is not numeric or logical:returning NA vars <- mtcars[c("mpg","hp","wt")] dstats <- function(x) cbind(mean=lapply(x, mean),sd=lapply(x,sd)) by(vars,mtcars$am,dstats) 你by的對象是一個data.frame (also is a list) 所以你第三個要放 對list or data.frame的運算方程式,因此用lapply才對 PS: 書上的寫法可能是以前版本的R才支援,現在可能已經被換成錯誤了 題外話: 建議學習用dplyr,在資料處理上面會比較簡單 by, aggregate都沒想像中好用,而且速度真的很慢,還不直覺XD 像是這個例子,在dplyr裡面就是先選我要的處理的四個變數(mpg, hp, wt, am) 我要以am做為group,然後其他的每一個變數求mean跟sd library(dplyr) mtcars %>% select(mpg, hp, wt, am) %>% group_by(am) %>% summarise_each(funs(mean, sd)) # Source: local data frame [2 x 7] # am mpg_mean hp_mean wt_mean mpg_sd hp_sd wt_sd # 1 0 17.14737 160.2632 3.768895 3.833966 53.90820 0.7774001 # 2 1 24.39231 126.8462 2.411000 6.166504 84.06232 0.6169816 : 問題二: : 設定常用package時,在WIN8按下SAVE存檔時,會發生存取被拒的訊息(WIN7不會) : C:\Program Files\R\R-3.1.2\etc\Rprofile.site : .First=function() : { : library(reshape) : ... : } 這是windows 8 權限問題 你可以把R的資料夾右鍵設定為使用者有所有權現 詳細可以GOOGLE一下 使用者 資料夾 所有權限 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.218.154.163 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1444548319.A.E1D.html

10/11 19:29, , 1F
謝謝回覆
10/11 19:29, 1F

10/11 19:33, , 2F
我來研究一下dplyr
10/11 19:33, 2F
可以在板上搜尋dplyr,可以找到我寫的介紹文 ※ 編輯: celestialgod (180.218.154.163), 10/11/2015 19:47:43
文章代碼(AID): #1M6WxVuT (R_Language)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1M6WxVuT (R_Language)