很多人以为R语言只是统计分析和画图的工具,其实它也能像Python或Shell一样写脚本,完成自动化任务。比如你每天要整理一份销售报表,手动操作费时还容易出错,用R写个脚本,一键运行就搞定。
为什么用R语言写脚本?
R在数据处理方面有天然优势。内置向量、数据框结构,加上dplyr、tidyr这些包,清洗数据几行代码就能完成。如果你的工作经常和Excel、CSV、数据库打交道,R脚本比手动操作高效太多。
而且Rscript命令可以直接在终端运行脚本,不依赖图形界面。服务器上跑定时任务、批量处理日志文件,都很合适。
一个简单的R脚本例子
假设你有一堆CSV格式的用户行为日志,想合并成一个总表,并统计每日访问量。可以写个R脚本自动处理:
library(dplyr)
library(readr)
# 读取目录下所有csv文件
files <- list.files("logs/", pattern = "*.csv", full.names = TRUE)
data_list <- lapply(files, read_csv)
combined_data <- bind_rows(data_list)
# 添加日期列并统计每日人数
daily_summary <- combined_data %>%
mutate(date = as.Date(timestamp)) %>%
count(date, name = "visits")
# 保存结果
write_csv(daily_summary, "output/daily_report.csv")
print("日报生成完成!")
如何运行R脚本
把上面的代码保存为generate_report.R,然后在终端执行:
Rscript generate_report.R
如果想每天早上8点自动运行,可以配合crontab(Linux/Mac)设置定时任务:
0 8 * * * Rscript /path/to/generate_report.R
实用技巧
脚本里可以用argparse包接收命令行参数。比如指定输入路径或日期范围:
library(argparse)
parser <- ArgumentParser()
parser$add_argument("--input", default = "logs/")
parser$add_argument("--date", default = Sys.Date())
args <- parser$parse_args()
这样调用脚本时就可以传参:Rscript script.R --input ./new_logs --date 2024-05-20,灵活性大大提升。
再复杂一点,还能用R脚本调用API获取数据、发送邮件通知结果,或者结合Shiny做简单Web接口。别再只把它当绘图工具了,R写脚本也能扛活。