作者celestialgod (天)
看板R_Language
标题Re: [问题] 关於by()
时间Sun Oct 11 15:25:16 2015
※ 引述《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://webptt.com/cn.aspx?n=bbs/R_Language/M.1444548319.A.E1D.html
1F:→ genki358: 谢谢回覆 10/11 19:29
2F:→ genki358: 我来研究一下dplyr 10/11 19:33
可以在板上搜寻dplyr,可以找到我写的介绍文
※ 编辑: celestialgod (180.218.154.163), 10/11/2015 19:47:43