楼主: wuchm
33023 15

[问答] 【求助】R自定义函数的写法 [推广有奖]

  • 6关注
  • 1粉丝

已卖:1417份资源

博士生

53%

还不是VIP/贵宾

-

威望
0
论坛币
2397 个
通用积分
4.5700
学术水平
1 点
热心指数
1 点
信用等级
0 点
经验
5181 点
帖子
230
精华
0
在线时间
236 小时
注册时间
2007-4-24
最后登录
2024-9-18

楼主
wuchm 发表于 2015-3-14 20:24:21 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

f1表

区域

预测数量

实际数量

q

100

200

w

20

30

e

200

190


f1表是原始数据,希望通过公式计算得出如下表f11,标注黄色是新增序列,我写了个自定义函数如下,运行后却没有结果,
请专家帮忙看看,谢谢!
setwd("E:/Rdata")
f11=read.csv(file="f1.csv")
rate <- function(x) {
  attach(x)
  n=nrow(x)
  for(i in 1:n){
    x$预测准确率=1-abs(预测数量-实际数量)/实际数量
  }
  detach(x)
}
rate(f11);f11


表f11:

区域

预测数量

实际数量

预测准确率

q

100

200

50%

w

20

30

67%

e

200

190

95%


二维码

扫码加我 拉你入群

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

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

关键词:自定义函数 自定义 RData READ Data file 黄色

沙发
qoiqpwqr 发表于 2015-3-14 23:33:13
  1. 1 - abs(f11[, 1] - f11[, 2]) / f11[, 2]
复制代码
已有 1 人评分学术水平 热心指数 收起 理由
求证1加1 + 1 + 1 热心帮助其他会员

总评分: 学术水平 + 1  热心指数 + 1   查看全部评分

藤椅
-Batistuta- 发表于 2015-3-15 11:08:34
在detach(x)下面加一行x表示返回结果x应该就可以了。而且你这个问题本身就不需要搞这么复杂,在你读取数据之后直接within(f11,预测准确率=1-abs(预测数量-实际数量)/实际数量)就可以了

板凳
wuchm 发表于 2015-3-15 15:01:38
-Batistuta- 发表于 2015-3-15 11:08
在detach(x)下面加一行x表示返回结果x应该就可以了。而且你这个问题本身就不需要搞这么复杂,在你读取数据之 ...
谢谢你的解答。
我用自定义函数,是因为还有很多个类似的表,也需要这样测算。

报纸
陈宝林 发表于 2015-3-15 15:26:59
  1. f11=read.csv(file="f1.csv")
  2. rate <- function(x) {
  3.   n=nrow(x)
  4.   for(i in 1:n){
  5.     x$预测准确率=1-abs(预测数量-实际数量)/实际数量
  6.    
  7.   }
  8.   return(x)
  9. }
  10. rate(f11)
  11. rm(f11)
复制代码


地板
陈宝林 发表于 2015-3-15 15:34:08
R语言函数都是值传递,不会改变参数(也就是这里的f11)值的。
已有 1 人评分经验 收起 理由
李会超 + 20 分析的有道理

总评分: 经验 + 20   查看全部评分

7
陈宝林 发表于 2015-3-15 15:41:27
所以你在函数中用detach貌似没什么用。。。

8
wuchm 发表于 2015-3-15 15:42:20
陈宝林 发表于 2015-3-15 15:34
R语言函数都是值传递,不会改变参数(也就是这里的f11)值的。
谢谢专家的指教!
return(x)的作用是?
我想把f11的表输出到文件夹(假如是csv格式),在自定义函数里面怎么写呢?还请赐教。

9
陈宝林 发表于 2015-3-15 15:47:23
wuchm 发表于 2015-3-15 15:42
谢谢专家的指教!
return(x)的作用是?
我想把f11的表输出到文件夹(假如是csv格式),在自定义函数里面 ...
write.csv(rate(f11),file="hahah.csv")

hahah是文件名,自己改,如果要保存到其他位置可以改

10
陈宝林 发表于 2015-3-15 15:49:35
你要问return(x)的作用,说明你没有学过C语言了,好吧,就是函数执行后这个表达式有一个值的,这个值就是用return返回的那个啦

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

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