学习笔记:学习R语言教程 (pku.edu.cn)
常量与变量
- 常量
常量是指直接写在程序中的值,包括数据、字符串等。
- 数值型常量
- 字符型常量 用两个双撇号或两个单撇号包围。
- 逻辑值常量 只有TRUE和FALSE。
- 缺失值 缺失值用NA表示
- 复数类常量
- 变量
程序语言中的变量用来保存输出的值或者计算得到的值。在R中,变量可以保存所有的数据类型, 比如标量、向量、矩阵、数据框、函数等。
- 变量名是可以区分大小写的。
- 变量名的第一个字符不能为数字。
- 变量名必须以字母、数字、下划线和句点组成。
R数据类型
R语言基本的数据类型有数值, 逻辑型(TRUE, FALSE),文本(字符串)。 支持缺失值,有专门的复数类型。
R语言数据结构包括:
- 向量
- 矩阵
- 数据框
- 多维数组
- 列表
- 对象等。
数据中元素、行、列还可以用名字访问。 最基本的是向量类型。 向量类型数据的访问方式也是其他数据类型访问方式的基础。
标量
单个数值称为标量, R没有单独的标量类型, 标量实际是长度为1的向量。
标量的运算即+、-、*、/、^,并且遵从通常的优先级计算顺序用括号改变运算的先后顺序。整除5 %/% 3
和求余5 %% 3
。
向量
向量是将若干个基础类型相同的值存储在一起, 各个元素可以按序号访问。
数值型向量
如果将若干个数值存储在一起可以用序号访问, 就叫做一个数值型向量。
标量: 一个元素组成的变量。
向量: 多个元素组成的变量。
元素: 指的是数字或字符串。
- 用c()函数把多个元素或向量组合成一个向量。
- 1:10这样的写法表示从1到10的整数组成的向量。
- 用print()函数显示向量或在命令行中显示向量
- seq(1,1o,by = 0.5)表示1~10之间每隔0.5取一个数。
- rep(1:3,times=2) 1-3,重复两次。
- length(x)可以求x的长度。 长度为零的向量表示为numeric(0)。
注:1:5和seq(5)的结果是整型(integer)的, c(1,3,5)和seq(1, 5, by=2)的结果是浮点型(double)的。
向量的运算
- 向量与标量的运算
向量与标量的运算为每个元素与标量的运算。一个向量乘以一个标量, 就是线性代数中的数乘运算。
- 等长的向量与向量运算
等长向量的运算为对应元素两两运算。两个等长向量的加、减运算就是线性代数中两个向量的加、减运算。
- 不等长向量的运算
两个不等长向量的四则运算, 如果其长度为倍数关系,规则是每次从头重复按照短的一个向量重复。如果两个向量的长度不是倍数关系,会给出警告信息。
向量化函数
R中的函数一般都是向量化的: 在R中, 如果普通的一元函数以向量为自变量,一般会对每个元素计算。
- sort()
sort函数对向量按照从小到大排序,默认返回向量从小到大的值sort(test,decreasing = T) 降序排列 - rev()
rev()函数用于返回数据对象的反向版本,数据对象可以定义为向量、按列和按行的 DataFrame 等。
向量作为样本计算统计量
- sum(求和),
- mean(求平均值)
- var(求样本方差)
- sd(求样本标准差)
- min(求最小值)
- max(求最大值)
- range(求最小值和最大值)
等函数称为统计函数, 把输入向量看作样本,计算样本统计量。
字符型向量
字符型向量是元素为字符串的向量。注意空字符串并不能自动认为是缺失值, 字符型的缺失值仍用NA表示。
paste()
paste()用来连接两个字符型向量, 元素一一对应连接, 默认用空格连接。
paste()用来连接两个字符型向量, 元素一一对应连接, 默认用空格连接。
paste()在连接两个字符型向量时采用R的一般向量间运算规则, 而且可以自动把数值型向量转换为字符型向量。 可以作一对多连接, 如paste("x", 1:3)结果相当于c("x 1", "x 2", "x 3")。
用sep=指定分隔符, 如paste("x", 1:3, sep="")结果相当于c("x1", "x2", "x3")。
使用collapse=参数可以把字符型向量的各个元素连接成一个单一的字符串, 如paste(c("a", "b", "c"), collapse="")结果相当于"abc"。
toupper()和tolower()
toupper()函数把字符型向量内容转为大写, tolower()函数转为小写。
nchar(x, type='bytes')
用nchar(x, type='bytes')计算字符型向量x中每个字符串的以字节为单位的长度,这一点对中英文是有差别的, 中文通常一个汉字占两个字节,英文字母、数字、标点占一个字节。
用nchar(x, type='chars')计算字符型向量x中每个字符串的以字符个数为单位的长度,这时一个汉字算一个单位。
substr(x, start, stop)
取子串
-
标量取子串
-
向量取子串
如果x是一个字符型向量,substr将对每个元素取子串。
- substring(x,star)
可以从字符串x中取出从第start个开始直到到末尾的子串。
as.numeric()和as.character()
as.numeric()把内容是数字的字符型值转换为数值型,as.numeric()是向量化的, 可以转换一个向量的每个元素为数值型。
比如可以把提取出来的字串(字符型)转变为数值型
as.character()函数把数值型转换为字符型
gsub()
用gsub()可以替换字符串中的子串, 这样的功能经常用在数据清理中。
fixed
logical. If TRUE, pattern is a string to be matched as is. Overrides all conflicting arguments.
下标取元素/子集
- 正整数下标
取第几位的元素/子集
x[2]取出第二个元素
x[2] <- 99修改第二个元素为99
x[c(1,3)]取出第1、3号元素
x[c(1,3)] <- c(11, 13)修改第1、3号元素。
- 负整数下标
负下标表示扣除相应的元素后还剩下的元素的子集。
3 空下标
x[]表示取x的全部元素作为子集。
即选中所有元素
- 零作为下标
x[0]是一种少见的做法, 结果返回类型相同、长度为零的向量, 如numeric(0)。 相当于空集。
当0与正整数下标一起使用时会被忽略。 当0与负整数下标一起使用时也会被忽略。
- 逻辑下标
下标可以是与向量等长的逻辑表达式, 一般是关于本向量或者与本向量等长的其它向量的比较结果
x[x==10]
x等于10的值
x[x<0]
x<0的值
x[x %in% c(1,2,5)]
存在于向量c(1,2,5)中的元素
- 下标超界
如果使用超出向量长度的下标, 读取时返回缺失值,并不出错。 给超出的下标元素赋值, 则向量自动变长, 中间没有赋值的元素为缺失值。
注:下标可重复。负整数下标不能与正整数下标同时用来从某一向量中取子集,没有意义。
读取文件
- colnames(data)查看列名
- rownames(data)查看行名
修改列名第一个格
colnames(x)[1] <- "bioplanet"
导出文件
分隔符改为逗号,字符串不加双引号(即quote = F)。
直接使用数据框的变量名作图
当文件保存失败,报错object not found
可能原因是,没有定义变量x,即没有对该变量进行赋值 。