R语言基础语法速成与学习

2024-09-01 01:04

本文主要是介绍R语言基础语法速成与学习,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作者:CSDN-PleaSure乐事

欢迎大家阅读我的博客 希望大家喜欢

目录

1.介绍

2.语法

2.1赋值

2.2算数运输

2.3取子集

2.4数据类型

2.4.1标量

2.4.2向量

2.4.2矩阵

2.4.3数组

2.4.4列表

2.4.5因子

2.4.6时间与日期

2.4.7空值NULL和数据缺失NA

2.4.8无限大INF和NAN

2.5数据框

2.5.1数据框的创建

2.5.2访问

2.5.3修改

2.5.4添加

2.5.5删除

2.5.6筛选与排序

2.5.7合并

2.5.8聚合和汇总


1.介绍

R语言是一种广泛使用的统计编程语言,尤其适合数据分析、统计计算和图形绘制。

2.语法

2.1赋值

在R中,赋值操作可以使用 <- 或者 = 来完成。尽管 = 更加直观,但是 <- 在R的历史中更为传统,也被广泛使用。

x <- 5  # 使用 <- 赋值
x = 5   # 使用 = 赋值

2.2算数运输

R支持基本的算术运算,包括加法 +、减法 -、乘法 *、除法 / 和取模(求余数)%%。

a <- 10
b <- 3
print(a + b)  # 加法
print(a - b)  # 减法
print(a * b)  # 乘法
print(a / b)  # 除法
print(a %% b) # 求余

2.3取子集

R提供了多种方法来提取或访问向量、矩阵或数据框中的元素。索引通常使用方括号 [ 和 ]。

vec <- c(1, 2, 3, 4, 5)  # 创建一个向量
print(vec[2])            # 访问第二个元素
print(vec[c(1, 3)])      # 访问第一个和第三个元素
print(vec[-2])           # 访问除了第二个元素之外的所有元素# 对于数据框
df <- data.frame(name = c("Alice", "Bob", "Charlie"),age = c(25, 30, 35),stringsAsFactors = FALSE
)
print(df$name)       # 访问name列
print(df[1, ])       # 访问第一行
print(df[, "age"])   # 访问age列

2.4数据类型

R中有几种基本的数据类型,包括标量、向量、矩阵、数组、列表、因子等。

  • 标量:标量是最基本的数据类型,如数字 5
  • 向量:向量是一维的数组,可以存储相同类型的元素。
  • 矩阵:矩阵是二维数组。
  • 数组:数组可以有多个维度。
  • 列表:列表是存储不同类型的元素的有序集合。
  • 因子:因子是用来表示分类变量的数据类型。

2.4.1标量

标量是最简单的数据类型,表示单个值。R中的标量实际上是一个长度为1的向量,它可以是数值型、字符型、逻辑型(布尔型)或复数型。

数值型 (numeric):表示实数,例如 1, 3.14。
整型 (integer):表示整数,例如 1L,这里的 L 表示这是一个整数。
字符型 (character):表示文本字符串,例如 "Hello", "World"。
逻辑型 (logical):表示布尔值,只有两个可能的值:TRUE 和 FALSE。
复数型 (complex):表示复数,例如 1 + 2i。

2.4.2向量

向量是一维数组,可以存储相同类型的元素。向量可以通过 c() 函数创建:

vector <- c(1, 2, 3, 4, 5)  # 数值型向量
char_vector <- c("apple", "banana", "cherry")  # 字符型向量
bool_vector <- c(TRUE, FALSE, TRUE)  # 逻辑型向量

2.4.2矩阵

matrix_data <- matrix(1:6, nrow = 2, ncol = 3)
print(matrix_data)

2.4.3数组

数组是多维的向量,可以有任意数量的维度,并且所有元素必须是同一类型。

array_data <- array(1:12, dim = c(2, 3, 2))
print(array_data)

2.4.4列表

列表是存储不同类型的对象的有序集合。列表可以通过 list() 函数创建:

list_data <- list(name = "Alice", age = 30, hobbies = c("reading", "coding"))
print(list_data)

2.4.5因子

因子是一种特殊类型的向量,用于分类数据。因子可以被标记为有序或无序,并且可以节省内存。

factor_data <- factor(c("low", "medium", "high", "low"))
print(factor_data)

2.4.6时间与日期

R支持多种日期和时间数据类型,如日期 (Date) 和 POSIXct 或 POSIXlt 类型的时间戳。

date_data <- as.Date("2024-01-01")
time_data <- Sys.time()
print(date_data)
print(time_data)

2.4.7空值NULL和数据缺失NA

NULL是一种特殊的值,表示一个不存在的对象或缺失的值。

null_value <- NULL
print(null_value)

NA表示“不可用”或缺失的数据,可以在任何数据类型中出现。

na_value <- NA
print(na_value)

2.4.8无限大INF和NAN

Inf 表示正无穷大,-Inf 表示负无穷大。

inf_value <- Inf
print(inf_value)

NaN 表示“不是一个数”,通常出现在数学运算错误的情况下。

nan_value <- 0/0
print(nan_value)

2.5数据框

数据框是R中最常用的数据结构之一,它类似于数据库表,由行和列组成。每一列代表一个变量,每一行代表一个观测值。

2.5.1数据框的创建

数据框可以通过data.frame函数来创建,该函数接收一系列向量作为参数,这些向量的长度应该相同,代表数据框中的列。每个向量可以有不同的数据类型。

# 创建一个数据框
df <- data.frame(name = c("Alice", "Bob", "Charlie"),age = c(25, 30, 35),gender = factor(c("Female", "Male", "Male")),  # 因子类型height = c(165, 175, 180),  # 数值类型stringsAsFactors = FALSE  # 避免将字符串自动转换为因子
)# 显示数据框
print(df)

2.5.2访问

可以使用多种方式来访问数据框中的元素:

  • 按列名访问:df$column_name 或 df[[column_name]]
  • 按位置访问:df[, column_index] 或 df[[column_index]]
  • 同时访问行和列:df[row_index, column_index]
# 按列名访问
print(df$name)  # 访问name列# 按位置访问
print(df[, 2])  # 访问第二列# 同时访问行和列
print(df[1, 2])  # 访问第一行第二列

2.5.3修改

可以使用相同的方式修改数据框中的元素:

# 修改name列为大写
df$name <- toupper(df$name)# 修改特定元素
df$age[2] <- 31  # 将第二行的年龄改为31

2.5.4添加

可以向数据框中添加新的列或行

# 添加列
df$occupation <- c("Engineer", "Doctor", "Artist")  # 添加职业列# 添加行
new_row <- data.frame(name = "David",age = 28,gender = "Male",height = 178,stringsAsFactors = FALSE
)
df <- rbind(df, new_row)  # 在数据框底部添加一行

2.5.5删除

可以使用负索引来删除数据框中的列或行:

# 删除列
df <- df[, -3]  # 删除第三列# 删除行
df <- df[-4, ]  # 删除第四行

2.5.6筛选与排序

可以使用逻辑条件来筛选数据框中的行:

# 筛选年龄大于30的人
selected_rows <- df[df$age > 30, ]# 排序
sorted_df <- df[order(df$age), ]  # 按年龄升序排列
sorted_df_desc <- df[order(df$age, decreasing = TRUE), ]  # 按年龄降序排列

2.5.7合并

可以使用merge函数来合并两个数据框,也可以使用rbind或cbind来垂直或水平堆叠数据框。

# 垂直堆叠
df1 <- data.frame(name = "Eve", age = 22, stringsAsFactors = FALSE)
df <- rbind(df, df1)# 水平堆叠
df2 <- data.frame(hobby = c("Coding", "Reading", "Painting", "Gaming"), stringsAsFactors = FALSE)
df <- cbind(df, df2)

2.5.8聚合和汇总

可以使用aggregate函数或tapply函数来进行数据框的聚合和汇总。

# 按性别汇总平均年龄
agg_result <- aggregate(age ~ gender, data = df, FUN = mean)
print(agg_result)

作者:CSDN-PleaSure乐事

希望我的博客对您有帮助,也希望在对您有帮助时您可以为我留下点赞收藏与关注,这对我真的很重要,谢谢!

这篇关于R语言基础语法速成与学习的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1125501

相关文章

使用Go语言开发一个命令行文件管理工具

《使用Go语言开发一个命令行文件管理工具》这篇文章主要为大家详细介绍了如何使用Go语言开发一款命令行文件管理工具,支持批量重命名,删除,创建,移动文件,需要的小伙伴可以了解下... 目录一、工具功能一览二、核心代码解析1. 主程序结构2. 批量重命名3. 批量删除4. 创建文件/目录5. 批量移动三、如何安

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

Go语言中三种容器类型的数据结构详解

《Go语言中三种容器类型的数据结构详解》在Go语言中,有三种主要的容器类型用于存储和操作集合数据:本文主要介绍三者的使用与区别,感兴趣的小伙伴可以跟随小编一起学习一下... 目录基本概念1. 数组(Array)2. 切片(Slice)3. 映射(Map)对比总结注意事项基本概念在 Go 语言中,有三种主要

C语言中自动与强制转换全解析

《C语言中自动与强制转换全解析》在编写C程序时,类型转换是确保数据正确性和一致性的关键环节,无论是隐式转换还是显式转换,都各有特点和应用场景,本文将详细探讨C语言中的类型转换机制,帮助您更好地理解并在... 目录类型转换的重要性自动类型转换(隐式转换)强制类型转换(显式转换)常见错误与注意事项总结与建议类型

Go语言利用泛型封装常见的Map操作

《Go语言利用泛型封装常见的Map操作》Go语言在1.18版本中引入了泛型,这是Go语言发展的一个重要里程碑,它极大地增强了语言的表达能力和灵活性,本文将通过泛型实现封装常见的Map操作,感... 目录什么是泛型泛型解决了什么问题Go泛型基于泛型的常见Map操作代码合集总结什么是泛型泛型是一种编程范式,允

Android kotlin语言实现删除文件的解决方案

《Androidkotlin语言实现删除文件的解决方案》:本文主要介绍Androidkotlin语言实现删除文件的解决方案,在项目开发过程中,尤其是需要跨平台协作的项目,那么删除用户指定的文件的... 目录一、前言二、适用环境三、模板内容1.权限申请2.Activity中的模板一、前言在项目开发过程中,尤

C语言小项目实战之通讯录功能

《C语言小项目实战之通讯录功能》:本文主要介绍如何设计和实现一个简单的通讯录管理系统,包括联系人信息的存储、增加、删除、查找、修改和排序等功能,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录功能介绍:添加联系人模块显示联系人模块删除联系人模块查找联系人模块修改联系人模块排序联系人模块源代码如下

基于Go语言实现一个压测工具

《基于Go语言实现一个压测工具》这篇文章主要为大家详细介绍了基于Go语言实现一个简单的压测工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录整体架构通用数据处理模块Http请求响应数据处理Curl参数解析处理客户端模块Http客户端处理Grpc客户端处理Websocket客户端