楼主: wuchm
33004 15

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

11
wuchm 发表于 2015-3-15 16:11:22
陈宝林 发表于 2015-3-15 15:47
write.csv(rate(f11),file="hahah.csv")

hahah是文件名,自己改,如果要保存到其他位置可以改
如果要写个通用的导出函数呢?
比如我有5个表格,都要通过自定义函数运行,并输出5个不同的结果,假如表名为x,输出csv文件名为:x.csv。

12
陈宝林 发表于 2015-3-16 09:47:41
如果你想要批量完成的话,可以把所有的数据文件都放在同一个文件夹中(这个文件夹不要放其他东西了),然后用下面的代码就可以了(这里我把所有文件都覆盖了)

  1. setwd("/home/bowling/Documents/R/temp")
  2. rate <- function(x) {
  3.   n=nrow(x)
  4.   x$预测准确率=1-abs(x$预测数量-x$实际数量)/x$实际数量
  5.   return(x)
  6. }
  7. #rm(f11)


  8. files<-dir()

  9. for(i in 1:length(files))
  10. {
  11.   x<-read.csv(file=files[i])
  12.   write.csv(rate(x),files[i])
  13. }
复制代码
已有 1 人评分经验 收起 理由
李会超 + 20 精彩帖子

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

13
wuchm 发表于 2015-3-16 21:59:50
陈宝林 发表于 2015-3-16 09:47
如果你想要批量完成的话,可以把所有的数据文件都放在同一个文件夹中(这个文件夹不要放其他东西了),然后 ...
没看懂哦,files<-dir()下面的程序是放在rate(f11)后面吗?

14
陈宝林 发表于 2015-3-16 23:05:54
我把程序重写了,之前的可以不要了。。。。
现在的工作目录是/home/bowling/Documents/R/temp,所以dir()返回的是该文件夹下的所有文件(是个向量,你看一下files的值就知道了),然后后面的就是对每个文件做循环了

15
wuchm 发表于 2015-3-18 08:44:33
陈宝林 发表于 2015-3-16 23:05
我把程序重写了,之前的可以不要了。。。。
现在的工作目录是/home/bowling/Documents/R/temp,所以dir()返 ...
谢谢你的热心解答。
我运行了下,没有看到f11表导出,计算结果显示在f1表哦。

16
陈宝林 发表于 2015-3-18 12:12:16
wuchm 发表于 2015-3-18 08:44
谢谢你的热心解答。
我运行了下,没有看到f11表导出,计算结果显示在f1表哦。
我本来就没说要导出f11啊,已经说了会替换原文件的

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-30 10:35