当前位置: 首页 > news >正文

R语言的基本语句及基本规则

0x01 赋值语句

使用 “<-” 或 “=” 进行赋值。例如:

x <- 5  # 将数值 5 赋值给变量 x
y = 10  # 另一种赋值方式

0x02 输出语句

使用 print() 函数输出内容。例如:

print("Hello, R!")
print(x)

0x03 注释语句

任何在 #之后的内容在 R 解释器中都会被忽略,作为注释。
例如:x <- 5 # 给变量 x 赋值为 5,这里 # 给变量 x 赋值为 5就是注释部分,它不会被执行,只是为了方便开发者理解代码的含义。

0x04 条件语句

1.if 语句:

if (condition) {# 如果条件为真执行这里的代码
}

例如:

if (x > 0) {print("x is positive")
}

2.if-else 语句:

if (condition) {# 如果条件为真执行这里的代码
} else {# 如果条件为假执行这里的代码
}

例如:

if (x > 0) {print("x is positive")
} else {print("x is non-positive")
}

3.if-else if-else 语句:

if (condition1) {# 如果条件 1 为真执行这里的代码
} else if (condition2) {# 如果条件 2 为真执行这里的代码
} else {# 如果所有条件都为假执行这里的代码
}

例如:

if (x > 0) {print("x is positive")
} else if (x < 0) {print("x is negative")
} else {print("x is zero")
}

0x05 循环语句

1.for 循环:

for (item in sequence) {# 对序列中的每个元素执行这里的代码
}

例如:

for (i in 1:5) {print(i)
}

2.while 循环:

while (condition) {# 当条件为真时执行这里的代码
}

例如:

i <- 1
while (i <= 5) {print(i)i <- i + 1
}

0x06 函数调用语句

使用函数名加上括号,并在括号内传入相应的参数来调用函数。例如:

mean(c(1, 2, 3, 4, 5))  # 求向量的均值

0x07 向量

一、向量的一致性
向量中的元素必须是同一类型,可以是数值型、字符型、逻辑型等。例如:v <- c (1, 2, 3)是一个数值型向量,w <- c ("apple", "banana", "cherry")是一个字符型向量,x <- c(TRUE, FALSE, TRUE)是一个逻辑型向量。
如果尝试把不同类型的成员放在一起,R 语言会尽量进行自动类型转换,以保持队伍的某种一致性。例如,v <- c(1, 2, "three"),这里原本前两个是数字,第三个是字符,R 语言会把前两个数字也转换为字符类型,最终这个向量就全是字符类型了。

二、向量的顺序
向量中的元素是有顺序的,就像队伍中的成员有前后排列顺序一样。可以通过索引来访问特定位置的成员。
比如在前面的数字向量中,v[1]就代表第一个成员 1,v[3]就代表第三个成员 3。

三、向量的操作
可以对向量这个队伍进行各种操作。比如可以对整个向量进行数学运算,就像让整个队伍的成员同时执行某个任务一样。
例如,给向量中的每个元素都加 2,如果是向量 v <- c(1, 2, 3, 4, 5),那么 v + 2 就会得到一个新的向量 c(3, 4, 5, 6, 7)

四、建立向量的方法
在 R 语言中,建立向量的方法主要有以下几种:
1.使用 c()函数
这是最常见的创建向量的方法。可以将不同的值组合在一起创建一个向量。

v <- c(1, 2, 3, 4, 5)
w <- c("apple", "banana", "cherry")
x <- c(TRUE, FALSE, TRUE)

2.使用 :运算符
可以创建一个连续的整数序列向量。

v <- 1:5  # 创建包含 1、2、3、4、5 的向量

3.使用 seq()函数
可以更灵活地创建序列向量。可以指定起始值、结束值、步长等参数。

v <- seq(from = 1, to = 10, by = 2)  # 创建从 1 到 10,步长为 2 的向量(1、3、5、7、9)

4.使用 rep()函数
可以重复一个值或一个向量来创建新的向量。

v <- rep(5, times = 3)  # 创建包含三个 5 的向量(5、5、5)
w <- rep(c(1, 2), times = 2)  # 创建包含(1、2、1、2)的向量

5.从外部数据创建向量
① 从文件中读取数据创建向量:例如从 CSV 文件中读取一列数据可以创建一个向量。

   data <- read.csv("myfile.csv")v <- data$column_name  # 假设 CSV 文件中有一列名为 column_name,提取这一列数据作为向量

②从数据库中查询数据创建向量:使用相应的数据库连接包,查询数据库中的一列数据可以创建向量。

6.使用函数的返回值创建向量
一些函数的返回值是向量,例如统计函数的结果可以创建向量。

v <- runif(5)  # 创建包含 5 个随机数的向量,来自均匀分布

0x08 变量命名

在 R 语言中,变量命名有以下规则:
一、字符组成
变量名可以由字母、数字、点(.)和下划线(_)组成。
例如:my_variablevariable1my.var都是合法的变量名。

二、开头字符
变量名必须以字母或点开头,不能以数字开头,且如果以点开头,后面必须紧跟字母,不能是数字。
正确的例子:myVar.myVar.myVar1
错误的例子:1myVar.1myVar

三、区分大小写
R 语言是区分大小写的,这意味着不同大小写的变量名代表不同的变量。
例如:myVarmyvar是两个不同的变量。

四、避免特殊字符和关键字
1.变量名不能包含除了字母、数字、点和下划线之外的特殊字符,如空格、逗号、括号等。
错误的例子:my varmy(Var)
2.变量名也不能是 R 语言的关键字,如 ifelsefor等。
错误的例子:ifelsewhere(因为它与关键字 else相似)。

五、有意义的命名
为了提高代码的可读性和可维护性,变量名应该具有描述性,能够清楚地表达变量所代表的含义。
例如:使用total_score而不是ts来表示总分,这样其他人在阅读你的代码时更容易理解变量的用途。

0x09 数组

在 R 语言中,数组(array)是一种可以存储多个相同类型元素的数据结构,它具有多个维度。
一、创建数组
可以使用 array()函数来创建数组。

# 创建一个一维数组
arr1 <- array(c(1, 2, 3, 4, 5))# 创建一个二维数组
arr2 <- array(c(1:12), dim = c(3, 4))

在创建二维数组的例子中,dim = c(3, 4)指定了数组的维度为 3 行 4 列。

二、访问数组元素
可以使用下标来访问数组中的元素。

# 访问二维数组 arr2 的第一行第二列元素
arr2[1, 2]

三、数组的属性
1.dim()函数可以查看数组的维度。
例如:dim(arr2)将返回 c(3, 4),表示这个数组有 3 行 4 列。
2.length()函数可以查看数组的总长度,即所有元素的个数。

四、数组的运算
可以对数组进行各种数学运算,例如加法、减法、乘法等。这些运算会对数组中的每个元素进行操作。

arr3 <- array(c(2, 4, 6, 8, 10))
arr4 <- arr1 + arr3

这里将数组 arr1arr3对应元素相加,得到一个新的数组 arr4。

五、数组与其他数据结构的转换
1.可以将数组转换为向量,使用 as.vector()函数。
例如:vec <- as.vector(arr2)将二维数组 arr2转换为一个向量。
2.可以从向量或其他数据结构创建数组,如前面创建数组的例子所示。

0x0A 数据框

在 R 语言中,数据框(data frame)是一种用于存储数据的表格型数据结构,它非常常用且功能强大。
一、创建数据框
使用 data.frame()函数创建数据框。可以将不同类型的向量作为参数传入,每个向量代表数据框的一列。

name = c("Alice", "Bob", "Charlie")
age = c(25, 30, 35)
gender = c("F", "M", "M")
df <- data.frame(name, age, gender)

二、查看数据框的结构
使用 str()函数可以查看数据框的结构信息,包括每列的名称、类型和数据的预览。

str(df)

三、访问数据框的元素
1.使用下标可以访问数据框中的特定元素。例如,df[1, 2]访问数据框 df的第一行第二列的元素。
2.使用列名可以访问特定的列。例如,df$name访问名为 “name” 的列。
3.可以使用条件筛选来选择满足特定条件的行。例如,df[df$age > 30,]选择年龄大于 30 的行。

四、添加和删除列
1.添加列:可以通过赋值的方式添加新的列。例如,df$new_column <- c(1, 2, 3)在数据框 df中添加一个名为 “new_column” 的列。
2.删除列:可以使用 subset()函数或者通过将特定列赋值为 NULL来删除列。例如,df <- subset(df, select = -new_column)或者 df$new_column <- NULL

五、对数据框进行操作
1.排序:可以使用 order()函数对数据框进行排序。例如,df[order(df$age),]按照年龄列对数据框进行升序排序。
2.合并数据框:可以使用 rbind()(按行合并)和 cbind()(按列合并)函数来合并多个数据框。例如,df1 <- data.frame(a = c(1, 2), b = c(3, 4))df2 <- data.frame(a = c(5, 6), b = c(7, 8))rbind(df1, df2)按行合并两个数据框。

0x0B 列表

在 R 语言中,列表(list)是一种非常灵活的数据结构,可以存储不同类型的元素,包括其他列表。
一、创建列表
可以使用 list()函数创建列表。

my_list <- list(name = "Alice", age = 25, scores = c(80, 90, 95), sublist = list(a = 1, b = 2))

二、访问列表元素
1.使用下标和双括号 [[]]可以访问列表中的特定元素。例如,my_list[[1]]访问列表中的第一个元素,这里是 “Alice”。
2.使用美元符号 $可以通过名称访问列表中的元素。例如,my_list$age访问年龄元素,即 25。
3.对于嵌套列表,可以使用多个下标或美元符号组合来访问内部元素。例如,my_list$sublist$a访问嵌套列表中的 “a” 元素,即 1。

三、添加和删除元素
1.添加元素:可以通过赋值的方式向列表中添加新元素。例如,my_list$new_element <- "new value"在列表中添加一个名为 “new_element” 的元素。
2.删除元素:可以将特定元素赋值为 NULL来删除它。例如,my_list$new_element <- NULL删除 “new_element” 元素。

四、列表的特点
1.灵活性:列表可以存储不同类型的元素,包括向量、数据框、函数等。这使得列表在处理复杂数据结构时非常有用。
2.嵌套性:列表可以包含其他列表,形成嵌套的结构,方便组织和管理数据。

五、列表与其他数据结构的转换
可以将列表转换为向量、数据框等其他数据结构,具体取决于列表的内容和需求。例如,可以使用 unlist()函数将列表转换为向量,但需要注意如果列表中包含不同类型的元素,转换可能会导致一些信息丢失。

0x0C 数据读入

在 R 语言中,可以从多种来源读入数据,以下是一些常见的方法:
一、从文本文件读入数据
1.读入 CSV 文件:
使用 read.csv()readr包中的 read_csv()函数。

   # 使用基础函数data <- read.csv("your_file.csv")# 使用 readr 包library(readr)data <- read_csv("your_file.csv")

2.读入文本文件(制表符分隔、空格分隔等):
使用 read.table()readr包中的 read_tsv()(读入制表符分隔文件)、read_delim()(可指定分隔符)等函数。

   # 读入制表符分隔的文件data <- read.table("your_file.txt", sep = "\t")

二、从 Excel 文件读入数据
使用 readxl包:

   library(readxl)data <- read_excel("your_file.xlsx")

三、从数据库读入数据
如前面所述,使用相应的数据库连接包(如 RMySQLRODBC等)建立数据库连接,然后执行 SQL 查询将数据读入 R。

四、从网页上获取数据
使用 rvest包进行网页抓取,提取所需的数据。

   library(rvest)page <- read_html("your_webpage_url")data <- page %>% html_nodes("your_selector") %>% html_text()

五、从 R 数据文件读入数据
使用 load()函数可以加载 .RData文件,其中可能包含之前保存的数据集或其他 R 对象。

   load("your_data.RData")

六、从其他统计软件导入数据
例如,可以使用 foreign包从 SPSS、SAS、Stata 等软件中导入数据。

在读取数据时,要注意可能需要根据实际情况指定一些参数,如文件路径、分隔符、列名、数据类型等,以确保正确地读入数据。

如果你还需要从同一目录下读取更多文件,可以利用setwd函数:
设置工作目录: setwd("your_directory_path")
查询当前工作目录:getwd()

0x0D 数据导出

在 R 语言中,可以将数据导出为多种格式,以下是一些常见的方法:
一、导出为 CSV 文件
使用 write.csv()write_csv()(来自 readr包)函数。

   # 使用基础函数write.csv(data, "output_file.csv", row.names = FALSE)# 使用 readr 包library(readr)write_csv(data, "output_file.csv")

参数 row.names = FALSE可以避免将行名写入 CSV 文件中,同理col.names参数可决定列名是否写入文件。

二、导出为 Excel 文件
使用 writexl包:

   library(writexl)write_xlsx(data, "output_file.xlsx")

三、导出为文本文件
使用 write.table()函数:

   write.table(data, "output_file.txt", sep = "\t", row.names = FALSE)

这里 sep = "\t"指定了使用制表符作为分隔符,你可以根据需要选择其他分隔符。

四、保存为 R 数据文件
使用 save()函数可以将 R 对象保存为 .RData文件。

   save(data, file = "output_data.RData")

在导出数据时,可以根据具体需求调整函数的参数,以满足不同的格式要求和输出设置。

相关文章:

R语言的基本语句及基本规则

0x01 赋值语句 使用 “<-” 或 “” 进行赋值。例如&#xff1a; x <- 5 # 将数值 5 赋值给变量 x y 10 # 另一种赋值方式0x02 输出语句 使用 print() 函数输出内容。例如&#xff1a; print("Hello, R!") print(x)0x03 注释语句 任何在 #之后的内容在…...

网络受限情况下安装openpyxl模块提示缺少Jdcal,et_xmlfile

1.工作需要处理关于Excel文件内容的东西 2.用公司提供的openpyxl模块总是提示缺少jdcal文件,因为网络管控,又没办法直接使用命令下载&#xff0c;所以网上找了资源&#xff0c;下载好后上传到个人资源里了 资源路径 openpyxl jdcal et_xmlfile 以上模块来源于&#xff1a;Py…...

【算法】- 查找 - 散列表查询(哈希表)

文章目录 前言一、哈希表的思想二、哈希表总结 前言 散列技术&#xff1a;在记录的存储位置和它的关键字之间建立一个确定的对应关系f&#xff0c;使得每个关键字key对应一个存储位置f(key) 哈希表&#xff1a;采用散列技术将记录存储在一块连续的存储空间中&#xff0c;这块连…...

货币政策工具

本文为个人学习笔记&#xff0c;内容源于教材&#xff1b;整理记录的同时也作为一种分享。 1. 简介 货币政策工具作为央行实现货币政策目标的经济手段&#xff0c;以期达到最终目标&#xff0c;即物价稳定&#xff0c;充分就业&#xff0c;经济增长&#xff0c;国际收支平衡。…...

std::async概念和使用方法

std::async是 C 标准库中的一个函数模板&#xff0c;用于启动一个异步任务&#xff0c;并返回一个std::future对象&#xff0c;该对象可用于获取异步任务的结果。 1、概念 std::async允许你以异步的方式执行一个函数或者可调用对象&#xff0c;它会在后台启动一个新的线程或者…...

Chatgpt 原理解构

一、背景知识 1. 自然语言处理的发展历程 自然语言处理在不同时期呈现出不同的特点和发展态势。萌芽期&#xff0c;艾伦・图灵在 1936 年提出 “图灵机” 概念&#xff0c;为计算机诞生奠定基础&#xff0c;1950 年他提出著名的 “图灵测试”&#xff0c;预见了计算机处理自然…...

【每日刷题】Day135

【每日刷题】Day135 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. LCR 011. 连续数组 - 力扣&#xff08;LeetCode&#xff09; 2. 【模板】二维前缀和_牛客题霸_牛客…...

Linux运维01:VMware创建虚拟机

视频链接&#xff1a;05.新建VM虚拟机_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1nW411L7xm/?p14&spm_id_from333.880.my_history.page.click&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5 1.点击“创建虚拟机” 2.选择“自定义&#xff08;高级&#xff0…...

服务器平均响应时间和数据包大小关系大吗?

服务器的平均响应时间与数据包大小有一定的关系&#xff0c;但这只是影响响应时间的众多因素之一。具体来说&#xff0c;数据包大小对服务器响应时间的影响可以从以下几个方面来理解&#xff1a; 1. 数据传输时间 影响: 较大的数据包需要更多的时间在网络上传输&#xff0c;因此…...

Vue入门-指令学习-v-show和v-if

v-show&#xff1a; 作用&#xff1a;控制元素的显示隐藏 语法&#xff1a;v-show"表达式" 表达式值true显示&#xff0c;false隐藏 v-if 作用&#xff1a;控制元素的显示隐藏&#xff08;条件渲染&#xff09; 语法&#xff1a; vif"表达式" 表达式tr…...

nacos多数据源插件介绍以及使用

概述 在微服务架构中&#xff0c;服务配置的集中管理和动态调整是至关重要的。Nacos 提供了配置管理和服务发现的功能&#xff0c;其中配置管理支持动态数据源的切换&#xff0c;增强了其在复杂环境中的适用性。默认情况下&#xff0c;Nacos 支持 MySQL 和Derby&#xff0c;但…...

国庆档不太热,影视股“凉”了?

今年国庆档票房止步21亿元&#xff0c;属实有点差强人意。 根据国家电影局统计&#xff0c;2024年国庆档&#xff08;2024年10月1日至7日&#xff09;全国电影票房为21.04亿元&#xff0c;观影人次为5209万&#xff0c;总票房成绩、观影总人次同比均有所下滑。 作为传统观影高…...

QtDesign预览的效果与程序运行的结果不一致的解决方法

存在的问题 使用Qt designer软件设计出来的界面&#xff0c;与转换成python程序运行出来的结果不一致&#xff0c;具体看下图 Qt designer预览结果 程序运行出来的结果 原因分析 我自己的电脑是2560*1600分辨率的屏幕&#xff0c;采用的是200%的缩放比例&#xff0c;出现这种…...

模运算和快速幂

文章目录 模运算快速幂 模运算 模运算是大数运算中的常用操作。如果一个数太大&#xff0c;无法直接输出&#xff0c;或者不需要直接输出&#xff0c;则可以对它取模&#xff0c;缩小数值再输出。取模可以防止溢出&#xff0c;这是常见的操作。 取模运算一般要求a和m的符号一…...

【机器学习】——神经网络与深度学习:从基础到应用

文章目录 神经网络基础什么是神经网络&#xff1f;神经网络的基本结构激活函数 深度学习概述什么是深度学习&#xff1f;常见的深度学习算法 深度学习的工作流程深度学习的实际应用结论 引言 近年来&#xff0c;神经网络和深度学习逐渐成为人工智能的核心驱动力。这类模型模仿人…...

Unity各个操作功能+基本游戏物体创建与编辑+Unity场景概念及文件导入导出

各个操作功能 部分功能 几种操作游戏物体的方式&#xff1a; Center:有游戏物体父子关系的时候&#xff0c;中心点位置 Global/Local:世界坐标系方向/自身坐标系方向 &#xff1a;调试/暂停/下一帧 快捷键 1.Alt鼠标左键&#xff1a;可以实现巡游角度查看场景 2.鼠标滚轮…...

QT入门教程攻略 QT入门游戏设计:贪吃蛇实现 QT全攻略心得总结

Qt游戏设计&#xff1a;贪吃蛇 游戏简介 贪吃蛇是一款经典的休闲益智类游戏&#xff0c;玩家通过控制蛇的移动来吃掉地图上的食物&#xff0c;使蛇的身体变长。随着游戏的进行&#xff0c;蛇的移动速度会逐渐加快&#xff0c;难度也随之增加。当蛇撞到墙壁或自己的身体时&…...

Linux No space left on device分析和解决

报错解释&#xff1a; "No space left on device" 错误表示你的Linux设备&#xff08;通常是磁盘分区&#xff09;上没有剩余空间了。这可能是因为磁盘已满&#xff0c;或者inode已满。磁盘空间是指磁盘上的实际空间&#xff0c;而inode是用来存储文件元数据的数据结…...

Qt实现Halcon窗口显示当前图片坐标

一、前言 Halcon加载图片的窗口&#xff0c;不仅能放大和缩小图片&#xff0c;还可以按住Ctrl键显示鼠标下的灰度值&#xff0c;这种方式很方便我们分析缺陷的灰度和对比度。 二、实现方式 ① 创建显示坐标和灰度的widget窗口 下图的是widget部件&#xff0c;使用了4个label控…...

构建宠物咖啡馆:SpringBoot框架的实现策略

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理基于Spring Boot的宠物咖啡馆平台的设计与…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署&#xff0c;直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型&#xff0c;但是目前国内可能使用不多&#xff0c;至少实践例子很少看见。开发训练模型就不介绍了&am…...

scikit-learn机器学习

# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)

引言 在人工智能飞速发展的今天&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;已成为技术领域的焦点。从智能写作到代码生成&#xff0c;LLM 的应用场景不断扩展&#xff0c;深刻改变了我们的工作和生活方式。然而&#xff0c;理解这些模型的内部…...

安卓基础(Java 和 Gradle 版本)

1. 设置项目的 JDK 版本 方法1&#xff1a;通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分&#xff0c;设置 Gradle JDK 方法2&#xff1a;通过 Settings File → Settings... (或 CtrlAltS)…...

Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?

Pod IP 的本质与特性 Pod IP 的定位 纯端点地址&#xff1a;Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址&#xff08;如 10.244.1.2&#xff09;无特殊名称&#xff1a;在 Kubernetes 中&#xff0c;它通常被称为 “Pod IP” 或 “容器 IP”生命周期&#xff1a;与 Pod …...

GC1808:高性能音频ADC的卓越之选

在音频处理领域&#xff0c;高质量的音频模数转换器&#xff08;ADC&#xff09;是实现精准音频数字化的关键。GC1808&#xff0c;一款96kHz、24bit立体声音频ADC&#xff0c;以其卓越的性能和高性价比脱颖而出&#xff0c;成为众多音频设备制造商的理想选择。 GC1808集成了64倍…...

MCP和Function Calling

MCP MCP&#xff08;Model Context Protocol&#xff0c;模型上下文协议&#xff09; &#xff0c;2024年11月底&#xff0c;由 Anthropic 推出的一种开放标准&#xff0c;旨在统一大模型与外部数据源和工具之间的通信协议。MCP 的主要目的在于解决当前 AI 模型因数据孤岛限制而…...

【学习记录】使用 Kali Linux 与 Hashcat 进行 WiFi 安全分析:合法的安全测试指南

文章目录 &#x1f4cc; 前言&#x1f9f0; 一、前期准备✅ 安装 Kali Linux✅ 获取支持监听模式的无线网卡 &#x1f6e0; 二、使用 Kali Linux 进行 WiFi 安全测试步骤 1&#xff1a;插入无线网卡并确认识别步骤 2&#xff1a;开启监听模式步骤 3&#xff1a;扫描附近的 WiFi…...