楼主: nixuehua
9006 2

[问答] R语言中by函数的使用问题 [推广有奖]

  • 0关注
  • 0粉丝

大专生

1%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
364 点
帖子
23
精华
0
在线时间
48 小时
注册时间
2016-3-15
最后登录
2020-5-26

楼主
nixuehua 发表于 2016-4-6 16:11:56 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
大家好,有谁知道这个问题怎么解决吗。
> 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语言实战上面也这么写的。能运行出结果,我的不知道什么问题……有会的,帮忙解答下,谢谢喽!

二维码

扫码加我 拉你入群

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

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

关键词:R语言 argument addition numeric warning addition message double cannot Error

沙发
jiangbeilu 学生认证  发表于 2016-4-6 17:14:20
可能你的函数有点问题吧,by的函数里的,FUN是对data.frame进行操作的。你的dstats不能对data.frame进行操作,试试以下代码吧:
  1. vars <- c("mpg","hp","wt")
  2. index <- which(names(mtcars)%in% vars )

  3. cp_mean_sd <- function(x){
  4. apply(x,2,function(x) data.frame(mean=mean(x),sd=sd(x)))
  5. }
  6. by(mtcars[,index],mtcars$am, cp_mean_sd)
复制代码

藤椅
nixuehua 发表于 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

这样就行了,非常感谢!

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-2 03:55