从数据类型 nvarchar 转换为 numeric 时出错_第二讲 R编程基础运算、数据类型和向量等基本介绍...

本文将引导你快速掌握R语言基础,包括基本算术运算、变量赋值、数据类型(数字、字符、逻辑)、向量操作、缺失值处理和因子变量。通过实例演示,理解如何创建、操作和管理数据,为后续的生物统计和编程实践打下坚实基础。
摘要由CSDN通过智能技术生成
在上一讲中,我们介绍了 R基本介绍及安装。 不知道大家是不是都安装好了R语言和RStudio呢?今天的更新,我们会带您学习R编程基础,主要学习内容如下图。

bc137281236e0c60109ff645cb95d533.png

1. 基本算术运算

基本的算术运算符是:

+(加法)

-(减法)

*(相乘)

/(除以)

^(取幂)

好啦,接下来让我们实践一下吧!打开你的RStudio,在控制台中直接键入以下命令:

4 + 7

[1] 11

7 - 4

[1] 3

4 * 7

[1] 28

7/4

[1] 1.75

2^4

[1] 16

以上就是最基本的算术运算,大家可以操作一下,接下来我们要开始稍微难一点点的运算喽。 Tips

在R中,“#”用于添加注释以解释R代码的含义。

1.1 基本算术功能

常用的有

log2(x) # x的对数以2为底log10(x) # x的对数以10为底exp(x) # x的指数abs(x) # x的绝对值sqrt(x) # x的平方根

和计算器一样,R语言也可以很方便地计算对数、指数、绝对值、平方根等,直接输入以上算术公式,按回车就可以啦,大家学会了吗?

接下来,我们要引入一个很重要的概念:变量。

简单来说,变量就是一个名称,就像你叫张三、李四一样。一个人有了名字就更方便交流了,变量也一样。通过设置变量,我们可以进行很多进阶的操作哦!

1.2 给变量赋值

例如,下面的R代码会将病人的年龄存储在一个变量中,例如"patient_age":

patient_age Tips

请注意,可以将=用于变量分配。

Tips

请注意,R区分大小写。这意味着patient_age与Patient_Age不同。

要打印创建的对象的值,只需键入其名称:

patient_age

[1] 2

或使用函数 print():

print(patient_age)

[1] 2

Tips

R将对象patient_age(也称为变量)保存在内存中,可以进行一些操作。

#5个病人的年龄5 * patient_age

[1] 10

你可以更改对象的值:

patient_age 5patient_age

[1] 5

函数ls()可用于查看我们创建的对象列表:

ls()

[1] "patient_age"

要删除变量,请使用函数rm():

2. 基本数据类型

基本数据类型为数字,字符和逻辑。

my_age 28my_name "Lily"#逻辑词#(yes/no) <=> (TRUE/FALSE)is_female TRUE

可以使用函数()来查看变量的类型:

class(my_age)

[1] "numeric"

class(my_name)

[1] "character"

你还可以使用函数is.numeric(),is.character(),is.logical()来检查变量分别是数字,字符还是逻辑。例如:

is.numeric(my_age)

[1] TRUE

is.numeric(my_name)

[1] FALSE

如果要将变量的类型更改为另一类型,请使用as。*函数,包括:as.numeric(),as.character(),as.logical()等。

my_age

[1] 28

#Convert my_age to a character variableas.character(my_age)

[1] "28"

Tips

请注意,将字符转换为数字将输出NA(不可用)。R无法将数字变量转换为字符变量。

3. 向量

向量是同一对象中多个值(数字,字符或逻辑)的组合。

在这种情况下,你可以具有数字向量,字符向量或逻辑向量。

3.1 创建一个向量

使用函数c()创建向量,如下所示:

#储存病人的数据到一个数值向量patient_ages 27, patient_ages

[1] 27 25 29 26

#保存病人的名字到一个字符向量my_patients "Zheng", my_patients

[1] "Zheng" "Wang" "Liu" "Li"

# 将病人的婚姻状况存储在逻辑向量中# (yes/no <=> TRUE/FALSE)are_married TRUE, are_married

[1]  TRUE FALSE  TRUE  TRUE

Tips

使用函数names()可以给向量的元素命名

#具有元素名称的向量names(patient_ages) "Zheng", patient_ages

Zheng Wang Liu Li

27      25      29      26

#你还可以创建一个命名向量,如下所示patient_ages <- c(Zheng = 27, Wang = 25, Liu = 29, Li = 26)patient_ages

Zheng Wang Liu Li

27      25      29      26

Tips

请注意,向量只能容纳相同类型的元素。例如,你不能有一个既包含字符又包含数字值的向量。

  • 查找向量的长度(即向量中元素的数量)

#病人数量length(my_patients)

[1] 4

3.2 缺失值的情况

我知道我的一些病人有两个孩子。但是对于其余的病人,此信息缺失(NA)。

在R中,缺失值(或缺失信息)用NA表示:

have_child <- c(Zheng = "yes", Wang = "yes", Liu = NA, Li = NA)have_child

Zheng Wang Liu  Li

"yes"   "yes"      NA      NA

可以使用函数is.na()来检查数据是否包含缺失值。函数is.na()的结果是一个逻辑向量,其中值TRUE指定x中的对应元素为NA。

#检查have_child是否包含缺失值is.na(have_child)

Zheng Wang Liu  Li

FALSE   FALSE    TRUE    TRUE

Tips

请注意,还有第二种缺失值,称为NaN(“非数字”)。这是在数学函数无法正常运行的情况下产生的,例如0/0 = NaN。

Tips

还要注意,对于NA和NaN值,函数is.na()均为TRUE。为了区分这些,函数is.nan()仅对NaN是TRUE。

3.3 获取向量的子集

  • 通过正索引选择:通过向量在方括号中的位置(索引)选择元素

#选取第二个病人名字my_patients[2]

[1] "Wang"

#选取第二和第四个病人名字my_patients[c(2, 4)]

[1] "Wang" "Li"

#选取第一到三个病人名字my_patients[1:3]

[1] "Zheng" "Wang" "Liu"

Tips

请注意,R从1开始索引而不是0。因此,你的第一列位于[1]而非[0]。

如果你有命名向量,也可以使用名称来选择元素:

patient_ages["Liu"]Liu

28

  • 通过负索引进行选择:排除元素

#去除第二个病人my_patients[-2]

[1] "Zheng" "Liu" "Li"

#去除第二和第四个病人my_patients[-c(2, 4)]

[1] "Zheng" "Liu"

#去除第一到三个病人my_patients[-(1:3)]

[1] "Li"

  • 如果要删除丢失的数据,请使用以下方法:

have_child

Zheng Wang Liu  Li

"yes"   "yes"      NA      NA

#只保留无缺失的数据have_child[!is.na(have_child)]

Zheng Wang

"yes"   "yes"

#将缺失值转成NOhave_child[is.na(have_child)] "NO"have_child

Zheng Wang Liu  Li

"yes"    "yes"      "NO"    "NO"

请注意,

R中可用的“逻辑”比较运算符为:

<:少于

>:大于

<=:小于或等于

> =:大于或等于

==:相等

!=:不相等

3.4 向量计算

如果对向量执行操作,则该操作将应用于向量的每个元素。下面提供了一个示例:

#病人的每周住院费用payment 2000, names(payment) "Zheng", payment

Zheng Wang Liu  Li

2000    1800    2500    3000

#费用的两倍payment * 2

Zheng Wang Liu  Li

4000    3600    5000    6000

如你所见,R将费用向量中的每个元素乘以2。

假如你需要将费用乘以不同的系数。可以使用以下R代码:

#创建与付款相同长度的coefs向量coefs 2, #乘以coefspayment * coefs

Zheng Wang Liu  Li

4000    2700    2500    9000

Tips

请注意,计算是逐元素进行的。工资向量的第一个元素乘以coefs向量的第一个元素,依此类推。

计算数值向量的平方根:

my_vector 4, sqrt(my_vector)

[1] 2 4 3

其他一些常用的功能,小编在这里列出,欢迎尝试:

max(x)min(x)range(x)length(x)sum(x)mean(x)sd(x)var(x)sort(x)

4. 因素

因子变量表示数据中的类别或组。函数factor()可用于创建因子变量。

创建一个因素

patient_groups 1, patient_groups

[1] 1 2 1 2

Levels: 1 2

Tips

变量patient_groups包含两类病人:1和2。在R术语中,类别称为因素水平(factor level)

可以使用level()函数访问因素水平:

#查看因素水平levels(patient_groups)

[1] "1" "2"

#更改因素水平1、2为具体内容levels(patient_groups) "recovered_patient", patient_groups

[1] recovered_patient     not_recovered_patient recovered_patient     not_recovered_patient

Levels: recovered_patient   not_recovered_patient

好了,本期讲解就先到这里。

在之后的更新中,我们会进一步为您介绍R的入门,以及常用生物统计方法和R实现。

32e6bab3308bbd00ad50629dec6ecbcc.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值