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

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识