R语言学习笔记3-基本类型篇

R语言学习笔记-基本类型篇

  • 基本类型介绍
  • 数值型(Numeric)
    • 整数型(Integer)
    • 浮点数型(Double)
    • 数值运算
    • 数值型 NA(缺失值)
  • 字符型(Character)
    • 字符型的特点和用途
    • 基本字符型示例
    • 含有特殊字符的字符型示例
    • 字符串连接和处理
    • 处理空字符串和空格
  • 逻辑型(Logical)
    • 基本逻辑型示例
    • 使用逻辑运算符
    • 逻辑型在条件语句中的应用
    • 逻辑型与向量运算
    • 逻辑型 NA(缺失值)
  • 因子型(Factor)
    • 因子型的特点和用途
    • 创建因子型变量
    • 使用因子型进行数据分析
    • 修改因子的水平和标签
  • 复数型(Complex)
    • 创建复数
    • 获取复数的实部和虚部
    • 复数的运算
    • 复数的模和参数表示
  • 类型转换
    • 数值型转换
      • 数值型转换为字符型
      • 字符型转换为数值型
    • 逻辑型转换
      • 数值型转换为逻辑型
      • 逻辑型转换为数值型
    • 因子型转换
      • 因子型转换为字符型
      • 因子型转换为数值型

基本类型介绍

1. 数值型(Numeric):用于存储数值数据,可以是整数或浮点数。例如:2, 3.14, -5
2. 字符型(Character):用于存储文本数据,必须用引号括起来。例如:“Hello, World!”, “R Programming”
3. 逻辑型(Logical):用于存储逻辑值,表示真(True)或假(False)。在 R 中用 TRUE 或 FALSE 表示逻辑值,也可以用 T 或 F 的简写形式
4. 因子型(Factor):可表示分类数据,具有预定义的取值范围和顺序。可通过 factor() 函数创建因子变量
5. 复数型(Complex):用于存储复数数据,由实部和虚部组成,形式为 a + bi,其中 a 和 b 是实数,i 是虚数单位

数值型(Numeric)

整数型(Integer)

整数是没有小数部分的数值。整数通常会自动转换为数值型,但可使用 as.integer() 函数明确指定为整数类型

# 自动转换为数值型
num1 <- 42
class(num1)  # 输出 "numeric"

# 明确指定为整数型
num2 <- as.integer(10)
class(num2)  # 输出 "integer"

浮点数型(Double)

浮点数包含小数点,所有的数值默认为双精度浮点数

# 浮点数
num3 <- 3.14159
class(num3)  # 输出 "numeric"

# 科学计数法表示
num4 <- 6.022e23  # 6.022 × 10^23
class(num4)  # 输出 "numeric"

数值运算

数值型支持常见的算术运算和数学函数,如加法、减法、乘法、除法以及三角函数、对数函数等

# 算术运算
result1 <- 10 + 5
result2 <- 10 / 2
result3 <- sin(pi/2)

# 输出结果
print(result1)  # 输出 15
print(result2)  # 输出 5
print(result3)  # 输出 1 (sin(π/2) = 1)

数值型 NA(缺失值)

数值型可以是缺失值(NA),用来表示缺少数据或未知数据

missing_value <- NA

字符型(Character)

字符型可用于存储文本数据。字符型数据必须用引号(单引号或双引号)括起来,以区分其它数据类型

字符型的特点和用途

1. 存储文本数据:字符型主要用于存储字符串,例如单词、句子、文件路径等
2. 使用引号:字符型数据必须用引号括起来,可使用单引号 (') 或双引号 ("),但在 R 编程中推荐使用双引号
3. 灵活性:可以包含字母、数字、特殊字符等,几乎可以表示任何文本信息

基本字符型示例

# 使用双引号定义字符型变量
message <- "Hello, World!"
class(message)  # 输出 "character"

# 使用单引号定义字符型变量
file_path <- 'C:/Users/Documents/data.csv'
class(file_path)  # 输出 "character"

含有特殊字符的字符型示例

# 包含特殊字符和空格的字符串
special_string <- "R is a statistical language."
class(special_string)  # 输出 "character"

# 包含引号的字符串
quoted_string <- "He said, \"Hello!\""
print(quoted_string)  # 输出 He said, "Hello!"

字符串连接和处理

# 字符串连接
first_name <- "John"
last_name <- "Doe"
full_name <- paste(first_name, last_name, sep = " ")
print(full_name)  # 输出 "John Doe"

# 获取字符串长度
name_length <- nchar(full_name)
print(name_length)  # 输出 8

处理空字符串和空格

# 空字符串
empty_string <- ""
class(empty_string)  # 输出 "character"

# 去除字符串两端的空格
spaces_string <- "  Data Science  "
trimmed_string <- trimws(spaces_string)
print(trimmed_string)  # 输出 "Data Science"

逻辑型(Logical)

逻辑型用来表示逻辑值的数据类型,主要用于存储真(True)或假(False)两种逻辑状态

基本逻辑型示例

# 定义逻辑型变量
is_true <- TRUE
class(is_true)  # 输出 "logical"

is_false <- FALSE
class(is_false)  # 输出 "logical"

使用逻辑运算符

# 逻辑与运算符 &&
result1 <- TRUE && FALSE
print(result1)  # 输出 FALSE

# 逻辑或运算符 ||
result2 <- TRUE || FALSE
print(result2)  # 输出 TRUE

# 逻辑非运算符 !
result3 <- !TRUE
print(result3)  # 输出 FALSE

逻辑型在条件语句中的应用

# 条件判断
age <- 25
is_adult <- age >= 18
if (is_adult) {
  print("成年人")
} else {
  print("未成年人")
}

逻辑型与向量运算

# 创建一个数值型向量
numbers <- c(5, 10, 15, 20, 25)

# 逻辑条件判断
greater_than_10 <- numbers > 10
print(greater_than_10)  # 输出 TRUE FALSE TRUE TRUE TRUE

# 使用逻辑向量过滤数据
numbers_filtered <- numbers[greater_than_10]
print(numbers_filtered)  # 输出 15 20 25

逻辑型 NA(缺失值)

逻辑型也可以表示缺失值(NA),在某些情况下用于表示未知或不适用的状态。

missing_value <- NA
is_missing <- is.na(missing_value)
print(is_missing)  # 输出 TRUE

因子型(Factor)

因子型是一种特定的数据类型,用于表示分类数据,通常具有预定义的取值范围和顺序。因子型数据在统计分析中特别有用,因其可指定数据的类别和顺序,以便在分析中进行正确的排序和比较

因子型的特点和用途

1. 存储分类数据:主要用于存储和表示有限个类别的数据,如性别(男、女)、教育水平(高中、本科、硕士)、喜好(喜欢、不喜欢)等
2. 预定义的水平:因子型数据由预先定义的水平(levels)组成,每个水平代表一个可能的类别值
3. 有序和无序因子:因子可以是有序的(ordered),其中水平有明确的顺序,或者是无序的(unordered),其中水平没有特定的顺序

创建因子型变量

# 创建一个无序因子
education <- c("高中", "本科", "硕士", "本科", "高中", "硕士")
education_factor <- factor(education)
print(education_factor)
# 输出:
# [1] 高中 本科 硕士 本科 高中 硕士
# Levels: 本科 硕士 高中

# 查看因子的水平
levels(education_factor)
# 输出: "本科" "硕士" "高中"

# 创建一个有序因子
temperature <- c("高", "低", "中", "中", "高", "低")
temp_factor <- factor(temperature, ordered = TRUE, levels = c("低", "中", "高"))
print(temp_factor)
# 输出:
# [1] 高 低 中 中 高 低
# Levels: 低 < 中 < 高

# 查看有序因子的水平
levels(temp_factor)
# 输出: "低" "中" "高"

使用因子型进行数据分析

因子型在统计分析中很有用,特别是在绘图和汇总统计信息时

# 创建一个因子型向量
gender <- c("男", "女", "女", "男", "男")
gender_factor <- factor(gender)

# 统计各水平的频数
table(gender_factor)
# 输出:
# gender_factor
# 女 男 
#  2  3

修改因子的水平和标签

# 创建一个因子
seasons <- c("春", "夏", "秋", "冬", "春", "夏")
seasons_factor <- factor(seasons)

# 修改因子的水平顺序
seasons_factor <- factor(seasons_factor, levels = c("春", "夏", "秋", "冬"))

# 修改因子的标签
levels(seasons_factor) <- c("Spring", "Summer", "Autumn", "Winter")

print(seasons_factor)
# 输出:
# [1] Spring Summer Autumn Winter Spring Summer
# Levels: Spring Summer Autumn Winter

复数型(Complex)

在 R 语言中,并没有直接支持复数型作为基本的数据类型,复数通常在数学和工程领域中使用,但可以使用两个数值型的向量来表示复数的实部和虚部

创建复数

# 创建一个复数向量
complex_number <- complex(real = 3, imaginary = 4)
print(complex_number)
# 输出:
# [1] 3+4i

获取复数的实部和虚部

# 获取实部
real_part <- Re(complex_number)
print(real_part)
# 输出:
# [1] 3

# 获取虚部
imaginary_part <- Im(complex_number)
print(imaginary_part)
# 输出:
# [1] 4

复数的运算

R 提供了一些内置函数来处理复数的运算,例如加法、乘法等

# 定义两个复数
z1 <- complex(real = 3, imaginary = 4)
z2 <- complex(real = -2, imaginary = 5)

# 加法
sum_result <- z1 + z2
print(sum_result)
# 输出:
# [1] 1+9i

# 乘法
product_result <- z1 * z2
print(product_result)
# 输出:
# [1] -26+7i

复数的模和参数表示

可以使用 Mod() 函数获取复数的模,使用 Arg() 函数获取复数的幅角(弧度)

# 获取模
modulus <- Mod(complex_number)
print(modulus)
# 输出:
# [1] 5

# 获取幅角
argument <- Arg(complex_number)
print(argument)
# 输出:
# [1] 0.9272952

类型转换

数值型转换

数值型转换为字符型

可以使用 as.character() 函数将数值型转换为字符型

# 数值型转换为字符型
number <- 42
number_as_string <- as.character(number)
class(number_as_string)  # 输出 "character"

字符型转换为数值型

使用 as.numeric() 函数将字符型转换为数值型。注意,字符型必须表示为有效的数值形式,否则会产生 NA

# 字符型转换为数值型
number_as_string <- "42"
number <- as.numeric(number_as_string)
class(number)  # 输出 "numeric"

逻辑型转换

数值型转换为逻辑型

使用 as.logical() 函数将数值型数据转换为逻辑型,非零值为 TRUE,零值为 FALSE

# 数值型转换为逻辑型
number <- 1
logical_value <- as.logical(number)
class(logical_value)  # 输出 "logical"

逻辑型转换为数值型

逻辑型可以直接使用 as.numeric() 转换为数值型,TRUE 转换为 1,FALSE 转换为 0

# 逻辑型转换为数值型
is_true <- TRUE
number <- as.numeric(is_true)
class(number)  # 输出 "numeric"

因子型转换

因子型转换为字符型

使用 as.character() 函数将因子型数据转换为字符型

# 因子型转换为字符型
education <- factor(c("高中", "本科", "硕士"))
education_as_character <- as.character(education)
class(education_as_character)  # 输出 "character"

因子型转换为数值型

可以使用 as.numeric() 将因子转换为数值型,此时会得到因子水平的编码值

# 因子型转换为数值型
education <- factor(c("高中", "本科", "硕士"))
education_as_numeric <- as.numeric(education)
class(education_as_numeric)  # 输出 "numeric"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/785088.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【回溯 - 1】46. 全排列

46. 全排列 难度&#xff1a;中等 力扣地址&#xff1a;https://leetcode.cn/problems/permutations/description/ 问题描述 给定一个 不含重复数字 的数组 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1&#xff1a; 输入&#xff1a;nu…

ICMP隧道

后台私信找我获取工具 目录 ICMP隧道作用 ICMP隧道转发TCP上线MSF 开启服务端 生成后门木马 msf开启监听 开启客户端icmp隧道 执行后门木马&#xff0c;本地上线 ICMP隧道转发SOCKS上线MSF 开启服务端 生成后门木马 msf开启监听 开启客户端icmp隧道 ​执行后…

经常用借呗和花呗对征信有影响吗?

说起支付宝里的花呗和借呗&#xff0c;大伙儿肯定都不陌生&#xff0c;它们俩就像是支付宝里的信用贷款双胞胎&#xff0c;名字相近&#xff0c;性格却大相径庭。现在&#xff0c;这俩兄弟都乖乖地接入了央行的征信大家庭&#xff0c;你的每一次使用&#xff0c;都会被记录得清…

老师怎么快速发布成绩?

期末考试的钟声刚刚敲响&#xff0c;成绩单的发放却成了老师们的一大难题。每当期末成绩揭晓&#xff0c;老师们便要开始一项繁琐的任务——将每一份成绩单逐一私信给家长。这不仅耗费了大量的时间和精力&#xff0c;也让本就忙碌的期末工作变得更加繁重。然而&#xff0c;随着…

生产力工具|Endnote X9如何自动更新文件信息

一、以EndNote X9.2版本为例&#xff0c;打开EndNote文献管理软件。 二、在菜单栏找到“Edit→Preferences...”&#xff0c;点击打开&#xff0c;弹出一个“EndNote Preferences”窗口。 三、进行设置 在打开的窗口左侧选择“PDF Handing”&#xff0c;右边会出现自动导入文献…

SwiftUI知识点(二)

Animation import SwiftUIstruct AnimationBootcamp: View {State var isAnimation: Bool falsevar body: some View {VStack{Button("Button"){withAnimation(Animation.default//重复//autoreverses: true&#xff1a;A-B-A-B//false: A-B&#xff0c;A-B.repeat…

[图解]SysML和EA建模住宅安全系统-13-时间图

1 00:00:00,480 --> 00:00:02,280 首先&#xff0c;我们来看&#xff0c;图画在哪里 2 00:00:02,290 --> 00:00:04,380 这个图 3 00:00:04,390 --> 00:00:06,180 你看&#xff0c;它是描述&#xff0c;刚才讲的 4 00:00:06,190 --> 00:00:09,010 描述这个活动 …

STM32学习历程(day5)

EXTI外部中断 中断 中断就是在主程序运行过程中 出现了特定的中断触发条件&#xff08;中断源&#xff09;&#xff0c;CPU会暂停当前的程序&#xff0c;去处理中断程序 处理完会返回被暂停的位置 继续运行原来的程序。 中断优先级 当有多个中断源同时申请中断时 CPU会根据…

设计模式之职责链模式(Chain of Responsibility Pattern)

1.概念 职责链模式&#xff08;Chain of Responsibility Pattern&#xff09;&#xff1a;避免将请求发送者与接收者耦合在一起&#xff0c;让多个对象都有机会接收请求&#xff0c;将这些对象连接成一条链&#xff0c;并且沿着这条链传递请求&#xff0c;直到有对象处理它为止…

单例模式(大话设计模式)C/C++版本

单例模式 C 饿汉 /* HM hungry man 饿汉 */ #include <iostream> using namespace std; class Singleton { private:Singleton() { cout << "单例对象创建&#xff01;" << endl; };Singleton(const Singleton &);Singleton &operator(c…

【ARMv8/v9 GIC 系列 2.4 -- GIC SGI 和 PPI 中断的启用配置】

请阅读【ARM GICv3/v4 实战学习 】 文章目录 GIC SGI 和 PPI 中断的使能配置GICR_ISENABLER0 操作使用举例SummaryGIC SGI 和 PPI 中断的使能配置 GICR_ISENABLER0寄存器(中断设置-使能寄存器0)用于启用相应的SGI(软件生成中断)或PPI(专用外设中断)向CPU接口的转发。每个…

Android多开应用软件系统设计

设计一个支持Android多开应用的软件系统&#xff0c;主要涉及到以下几个关键技术点和设计考虑&#xff1a; 1. 虚拟化技术 容器技术&#xff1a;与传统的虚拟机不同&#xff0c;可以采用更轻量级的容器技术&#xff0c;为每个应用实例创建独立的运行环境。这包括分配独立的用…

atcoder 357 F Two Sequence Queries (线段树板子)

题目&#xff1a; 分析&#xff1a; 线段树 代码&#xff1a; // Problem: F - Two Sequence Queries // Contest: AtCoder - SuntoryProgrammingContest2024&#xff08;AtCoder Beginner Contest 357&#xff09; // URL: https://atcoder.jp/contests/abc357/tasks/abc357_…

AI实时免费在线图片工具6:以图生相似图

1、以图生图&#xff0c;生成相似图 https://huggingface.co/spaces/diffusers/unofficial-SDXL-Turbo-i2i-t2i 间接实现&#xff1a;可以是图片先提取描述&#xff0c;再通过描述再去生成新图片 https://huggingface.co/spaces/gokaygokay/KolorsPlusPlus

JAVA基础-----128陷阱

一、何为128陷阱 Java中Integer类型在使用比较时的特殊行为------128陷阱&#xff0c;解释了当数值在-128到127范围内&#xff0c;由于valueOf方法的缓存机制导致地址相同&#xff0c;比较为真&#xff1b;超出这个范围则新分配内存&#xff0c;地址不同&#xff0c;比较为假。…

动态数据库设计

动态数据库设计是一种灵活的方法&#xff0c;用于构建能够适应不断变化的数据需求的数据库结构。它强调在不频繁修改数据库表结构的前提下&#xff0c;有效管理和存储多样化的数据。以下是实现动态数据库设计的一些关键技术点和策略&#xff1a; 实体-属性-值&#xff08;EAV&a…

安卓项目中so库选择

接上篇Android中常见SDK类型区别-CSDN博客 一些重要的加密算法或者核心协议一般都在C中编写&#xff0c;然后给java调用。这样可以避免反编译后查看到应用的源码。此时就需要了解一下NDK中的ABI&#xff08;Application Binary Interface的缩写&#xff0c;也就是应用二进制接…

代谢组数据分析一:代谢组数据准备

介绍 该数据集是来自于Zeybel 2022年发布的文章_Multiomics Analysis Reveals the Impact of Microbiota on Host Metabolism in Hepatic Steatosis_ [@zeybel2022multiomics],它包含了多种组学数据,如: 微生物组(粪便和口腔) 宿主人体学指标 宿主临床学指标 宿主血浆代谢…

8.8.8.8 IP地址的作用

在跟着韦东山老师的学习手册中看见了关于8.8.8.8 IP用于检测网络状态&#xff0c;然后搜索了关于此IP的相关作用如下&#xff1a; 公共DNS服务&#xff1a;8.8.8.8是Google提供的两个公共DNS服务器地址之一&#xff08;另一个是8.8.4.4&#xff09;。DNS&#xff08;域名系统&a…

GNN Algorithms(9): LLM Prompts--p-tuning、LoRA

目录 1. prompt-tuning background 2. Prompt Tuning 模型介绍 2.1 2021 prefix-tuning 2.2 2021 P-tuning v1 2.3 2021 Parameter-efficient prompt tuning (PET) 2.4 2022 P-tuning v2 2.5 2019 Adapter ​2.6 2021 LoRA (Low-Rank Adaptation) 2.7 2024 DoRA (…