Re: [問題] 關於by()
※ 引述《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
10/11 19:33, 2F
可以在板上搜尋dplyr,可以找到我寫的介紹文
※ 編輯: celestialgod (180.218.154.163), 10/11/2015 19:47:43
討論串 (同標題文章)
R_Language 近期熱門文章
PTT數位生活區 即時熱門文章