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

相关文章

MySQL 多列 IN 查询之语法、性能与实战技巧(最新整理)

《MySQL多列IN查询之语法、性能与实战技巧(最新整理)》本文详解MySQL多列IN查询,对比传统OR写法,强调其简洁高效,适合批量匹配复合键,通过联合索引、分批次优化提升性能,兼容多种数据库... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析

深入理解Go语言中二维切片的使用

《深入理解Go语言中二维切片的使用》本文深入讲解了Go语言中二维切片的概念与应用,用于表示矩阵、表格等二维数据结构,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录引言二维切片的基本概念定义创建二维切片二维切片的操作访问元素修改元素遍历二维切片二维切片的动态调整追加行动态

Go语言中make和new的区别及说明

《Go语言中make和new的区别及说明》:本文主要介绍Go语言中make和new的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1 概述2 new 函数2.1 功能2.2 语法2.3 初始化案例3 make 函数3.1 功能3.2 语法3.3 初始化

Go语言中nil判断的注意事项(最新推荐)

《Go语言中nil判断的注意事项(最新推荐)》本文给大家介绍Go语言中nil判断的注意事项,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.接口变量的特殊行为2.nil的合法类型3.nil值的实用行为4.自定义类型与nil5.反射判断nil6.函数返回的

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

Go语言代码格式化的技巧分享

《Go语言代码格式化的技巧分享》在Go语言的开发过程中,代码格式化是一个看似细微却至关重要的环节,良好的代码格式化不仅能提升代码的可读性,还能促进团队协作,减少因代码风格差异引发的问题,Go在代码格式... 目录一、Go 语言代码格式化的重要性二、Go 语言代码格式化工具:gofmt 与 go fmt(一)

从基础到进阶详解Pandas时间数据处理指南

《从基础到进阶详解Pandas时间数据处理指南》Pandas构建了完整的时间数据处理生态,核心由四个基础类构成,Timestamp,DatetimeIndex,Period和Timedelta,下面我... 目录1. 时间数据类型与基础操作1.1 核心时间对象体系1.2 时间数据生成技巧2. 时间索引与数据

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Go语言中泄漏缓冲区的问题解决

《Go语言中泄漏缓冲区的问题解决》缓冲区是一种常见的数据结构,常被用于在不同的并发单元之间传递数据,然而,若缓冲区使用不当,就可能引发泄漏缓冲区问题,本文就来介绍一下问题的解决,感兴趣的可以了解一下... 目录引言泄漏缓冲区的基本概念代码示例:泄漏缓冲区的产生项目场景:Web 服务器中的请求缓冲场景描述代码

Go语言如何判断两张图片的相似度

《Go语言如何判断两张图片的相似度》这篇文章主要为大家详细介绍了Go语言如何中实现判断两张图片的相似度的两种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 在介绍技术细节前,我们先来看看图片对比在哪些场景下可以用得到:图片去重:自动删除重复图片,为存储空间"瘦身"。想象你是一个