请选择 进入手机版 | 继续访问电脑版
楼主: jiangqing001
6609 8

[问答] 如何把function的返回值用data.frame输出 [推广有奖]

  • 12关注
  • 5粉丝

教授

85%

还不是VIP/贵宾

-

威望
0
论坛币
10491 个
通用积分
332.3063
学术水平
16 点
热心指数
27 点
信用等级
14 点
经验
26248 点
帖子
1929
精华
0
在线时间
1387 小时
注册时间
2011-12-7
最后登录
2021-3-15

jiangqing001 发表于 2014-10-25 17:26:25 |显示全部楼层 |坛友微信交流群
相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
求助:
   如何在R中把function的返回值用data.frame输出(因为有多个类型不同的输出值)?
二维码

扫码加我 拉你入群

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

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

关键词:function Frame Fram Data CTI function 如何

回帖推荐

qoiqpwqr 发表于7楼  查看完整内容

函数里的最后两句改成
qoiqpwqr 发表于 2014-10-25 18:51:46 |显示全部楼层 |坛友微信交流群
用list输出

使用道具

jiangqing001 发表于 2014-10-25 19:59:43 |显示全部楼层 |坛友微信交流群
qoiqpwqr 发表于 2014-10-25 18:51
用list输出
感谢回复!
    1. list输出的形式不是我所想要的
    2.list输出到csv里面时会报错

不知如何解决??

使用道具

jiangqing001 发表于 2014-10-25 20:00:39 |显示全部楼层 |坛友微信交流群
附上代码:

reg_diag <- function(fm){
  n <- nrow(fm$model)      #rawdata
  df <- fm$df.residual     #df_of_residual
  p <- n-df-1
  s <- rep(" ",n)          #!
  res <- residuals(fm)
  s1 <- s
  s1[abs(res)==max(abs(res))] <- "*"
  sta <- rstandard(fm)
  s2 <- s
  s2[abs(sta)>2] <- "*"
  stu <- rstudent(fm)
  s3 <- s
  s3[abs(stu)>2] <- "*"
  h <- hatvalues(fm)
  s4 <- s
  s4[h>2*(p+1)/n] <- "*"
  d <- dffits(fm)
  s5 <- s
  s5[d>2*sqrt((p+1)/n)] <- "*"
  c <- cooks.distance(fm)
  s6 <- s
  s6[c==max(c)] <- "*"
  co <- covratio(fm)
  s7 <- s
  s7[co=max(abs(co-1))] <- "*"
  res <- list(residual=res,s1,standardedresidual=sta,s2,
             studentedresidual=stu,s3,hat_matrix=hat,s4,
             DFFITS=d,s5,cooks_distance=c,s6,
             COVRATIO=co,s7)
  write.csv("C:\\Users\\Administrator\\Desktop\\result.csv",res,col.names=T)
}

intellect <- data.frame(
  x <- c(15,26,10,9 ,15 ,20,18,11 ,8  ,20,7  ,9 ,10,11,11 ,10 ,12 ,42,17 ,11,10),
  y <- c(95,71,83,91,102,87,93,100,104,94,113,96,83,84,102,100,105,57,121,86,100)
)

lm.sol <- lm(y~x,data=intellect)

reg_diag(lm.sol)

使用道具

jiangqing001 发表于 2014-10-25 20:02:49 |显示全部楼层 |坛友微信交流群
前两行复制时有些不清晰:

n <- nrow(fm$model)   
  df <- fm$df.residual   
  p <- n-df-1
  s <- rep(" ",n)         
  res <- residuals(fm)

使用道具

jiangqing001 发表于 2014-10-25 20:21:56 |显示全部楼层 |坛友微信交流群
用cbind处理一下,输出的结果是想要的了(如附件截图)
但是输出到csv的问题还是没有解决

望大家指点!
捕获.PNG

使用道具

qoiqpwqr 发表于 2014-10-26 05:38:35 |显示全部楼层 |坛友微信交流群
函数里的最后两句改成

  1.     res <- data.frame(residual=res,s1,standardedresidual=sta,s2,
  2.                 studentedresidual=stu,s3,hat_matrix=h,s4,
  3.                 DFFITS=d,s5,cooks_distance=c,s6,
  4.                 COVRATIO=co,s7)
  5.     write.table(res, "C:\\Users\\Yang\\Desktop\\result.csv", col.names=T, sep=",")
复制代码

使用道具

jiangqing001 发表于 2014-10-26 07:24:45 |显示全部楼层 |坛友微信交流群
qoiqpwqr 发表于 2014-10-26 05:38
函数里的最后两句改成
感谢回复!

正确输出了!我本来用 write.csv("C:\\Users\\Administrator\\Desktop\\result.csv",res,col.names=T)输出时候就会报data.frame输出的错误,不知为何?

使用道具

qoiqpwqr 发表于 2014-10-26 09:45:07 |显示全部楼层 |坛友微信交流群
jiangqing001 发表于 2014-10-26 07:24
感谢回复!

正确输出了!我本来用 write.csv("C:\\Users\\Administrator\\Desktop\\result.csv",res,c ...
write.csv本来就是调用write.table,还是直接用write.table比较保险

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-3-29 05:34