说实话,当我第一次听到R语言的时候,还以为是什么新出的编程语言缩写。后来才知道,这个看起来平平无奇的字母,竟然是统计学界和数据科学领域的"扛把子"!
R语言诞生于1993年,由新西兰奥克兰大学的Ross Ihaka和Robert Gentleman开发。名字就是取他们两人名字的首字母(多么朴素的命名方式)。经过三十年的发展,R已经成为数据分析、统计建模和可视化的首选工具之一。
免费开源:这点真的太香了!不像某些商业软件动辄几万块的授权费,R语言完全免费,而且源代码公开。
丰富的统计功能:R天生就是为统计分析而生的。从基础的描述性统计到高级的机器学习算法,应有尽有。
强大的可视化能力:ggplot2包简直是数据可视化的神器,能够轻松制作出专业级别的图表。
活跃的社区支持:CRAN(综合R档案网络)上有超过18000个扩展包,几乎覆盖了所有你能想到的应用场景。
首先去R官网下载安装包。Windows用户直接下载exe文件,Mac用户下载pkg文件,Linux用户可以通过包管理器安装。
安装过程相当简单,基本就是一路点击"下一步"。不过有个小建议:安装路径最好不要有中文字符,避免后续出现奇怪的问题。
虽然R自带了基础的编辑器,但说实话界面比较朴素(说得好听点叫简洁)。RStudio是一个专门为R语言设计的集成开发环境,界面友好,功能强大。
RStudio分为免费版和收费版,对于初学者来说,免费版已经完全够用了。下载安装后,你会发现编程体验提升了不止一个档次!
打开RStudio,你会看到四个主要区域:
R语言的变量赋值有两种方式:使用等号或箭头符号。
```r
x = 10 name = "张三"
y <- 20 age <- 25 ```
R语言的基础数据类型包括:
数值型:整数和小数都算 r num1 <- 3.14 num2 <- 42L # L表示整数
字符型:用引号包围的文本 r text <- "Hello R World" char <- 'A'
逻辑型:布尔值 r is_student <- TRUE is_working <- FALSE
向量是R语言最基础也是最重要的数据结构。可以这么说,在R中,单个数值本质上也是长度为1的向量!
```r
numbers <- c(1, 2, 3, 4, 5) scores <- c(85, 92, 78, 96, 88)
names <- c("小明", "小红", "小刚") cities <- c("北京", "上海", "广州", "深圳")
result <- numbers * 2 # 每个元素都乘以2 sum_scores <- sum(scores) # 求和 mean_score <- mean(scores) # 求平均值 ```
数据框(data.frame)就像Excel表格一样,是处理结构化数据的利器。
```r
students <- data.frame( name = c("小明", "小红", "小刚", "小丽"), age = c(20, 19, 21, 20), score = c(85, 92, 78, 96), city = c("北京", "上海", "广州", "深圳") )
str(students) head(students) # 查看前几行 summary(students) # 数据摘要 ```
R语言提供了多种数据筛选方式,灵活性很高。
```r
students[1, ] # 第一行 students[, 2] # 第二列 students[1:3, ] # 前三行
students$name # 获取姓名列 students[["score"]] # 另一种方式获取成绩列
high_score_students <- students[students$score > 85, ] beijing_students <- students[students$city == "北京", ] ```
真实世界的数据往往不够干净,需要进行预处理。
```r
is.na(students) complete.cases(students)
students_clean <- na.omit(students) # 删除含有缺失值的行
students$age <- as.numeric(students$age) students$city <- as.factor(students$city) ```
R语言内置了丰富的统计函数,使用起来相当便利。
```r
mean(students$score) # 平均值 median(students$score) # 中位数 sd(students$score) # 标准差 var(students$score) # 方差 range(students$score) # 取值范围 quantile(students$score) # 分位数
table(students$city) # 频数统计 prop.table(table(students$city)) # 比例统计 ```
```r
study_data <- data.frame( study_hours = c(2, 4, 6, 8, 10), exam_score = c(65, 75, 85, 90, 95) )
correlation <- cor(study_data$study_hours, study_data$exam_score) print(paste("相关系数:", round(correlation, 3))) ```
R语言的基础绘图系统虽然简单,但功能已经很全面了。
```r
plot(study_data$study_hours, study_data$exam_score, main = "学习时间与考试成绩关系图", xlab = "学习时间(小时)", ylab = "考试成绩", col = "blue", pch = 19)
abline(lm(exam_score ~ study_hours, data = study_data), col = "red")
barplot(table(students$city), main = "各城市学生分布", col = c("red", "blue", "green", "orange"))
hist(students$score, main = "成绩分布直方图", xlab = "成绩", ylab = "频数", col = "lightblue") ```
虽然基础绘图已经不错,但ggplot2包才是R语言可视化的精髓所在!
```r
install.packages("ggplot2") library(ggplot2)
ggplot(study_data, aes(x = study_hours, y = exam_score)) + geom_point(color = "blue", size = 3) + geom_smooth(method = "lm", color = "red") + labs(title = "学习时间与成绩关系", x = "学习时间(小时)", y = "考试成绩") + theme_minimal()
ggplot(students, aes(x = city, y = score, fill = city)) + geom_boxplot() + labs(title = "各城市学生成绩分布", x = "城市", y = "成绩") + theme(legend.position = "none") ```
这个问题真的让很多初学者头疼!R语言在处理中文时确实有些挑剔。
```r
Sys.setlocale("LC_CTYPE", "Chinese")
theme_set(theme_gray(base_family = "STSong")) # Mac系统 theme_set(theme_gray(base_family = "SimSun")) # Windows系统 ```
有时候安装包会遇到各种奇怪的错误,这里有几个小技巧:
```r
options(repos = c(CRAN = "https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))
install.packages("package_name", dependencies = TRUE)
installed.packages() ```
R语言是内存密集型的,处理大数据集时需要注意内存使用。
```r
rm(list = ls()) # 清空环境变量 gc() # 垃圾回收
object.size(students) ```
数据操作类: - dplyr:数据操作的瑞士军刀 - tidyr:数据整理专家 - stringr:字符串处理高手
可视化类: - ggplot2:图形语法的经典实现 - plotly:交互式图表制作 - leaflet:地图可视化
统计分析类: - caret:机器学习工具箱 - randomForest:随机森林算法 - cluster:聚类分析
R语言确实有一定的学习曲线,特别是对于没有编程基础的朋友来说。但是一旦掌握了基础语法和常用操作,你会发现R语言在数据分析方面的强大威力。
最重要的是多动手练习!理论再多,不如亲自写几行代码来得实在。从简单的数据读取开始,逐步尝试更复杂的分析任务,相信你很快就能成为R语言的熟练使用者。
记住:每个数据科学家都是从第一行代码开始的,你也不例外!现在就打开RStudio,开始你的R语言数据分析之旅吧。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。