全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
8888 2
2016-04-06
大家好,有谁知道这个问题怎么解决吗。
> vars <- c("mpg","hp","wt")
> dstats <- function(x)(c(mean=mean(x), sd=sd(x)))
> by(mtcars[vars],mtcars$am, dstats)
Error in is.data.frame(x) :
  (list) object cannot be coerced to type 'double'
In addition: Warning message:
In mean.default(x) : argument is not numeric or logical: returning NA
我看R语言实战上面也这么写的。能运行出结果,我的不知道什么问题……有会的,帮忙解答下,谢谢喽!

二维码

扫码加我 拉你入群

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

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

全部回复
2016-4-6 17:14:20
可能你的函数有点问题吧,by的函数里的,FUN是对data.frame进行操作的。你的dstats不能对data.frame进行操作,试试以下代码吧:
复制代码
二维码

扫码加我 拉你入群

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

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

2016-4-7 23:09:37
jiangbeilu 发表于 2016-4-6 17:14
可能你的函数有点问题吧,by的函数里的,FUN是对data.frame进行操作的。你的dstats不能对data.frame进行操作 ...
您说的很对,因为我的dstats中的mean和sd函数不能用于数据框,我将它修改了一下:
> dstats <- function(x)(c(mean=apply(x,2,mean),sd=apply(x,2,sd)))
> by(mtcars[vars],mtcars$am,dstats)
mtcars$am: 0
   mean.mpg     mean.hp     mean.wt      sd.mpg       sd.hp       sd.wt
17.1473684 160.2631579   3.7688947   3.8339664  53.9081957   0.7774001
---------------------------------------------------------------
mtcars$am: 1
   mean.mpg     mean.hp     mean.wt      sd.mpg       sd.hp       sd.wt
24.3923077 126.8461538   2.4110000   6.1665038  84.0623243   0.6169816

这样就行了,非常感谢!
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群