匹配:
match:
找出x中元素在y中的位置,返回y中相关元素的索引。
match(x, y, nomatch = NA_integer_, incomparables = NULL)
# x: 向量, 要匹配的值;
# table: 向量, 被匹配的值;
# nomatch: 没匹配上的返回值, 必须是整数;
# incomparables: 指定不能用来匹配的值.
与 %in% 相似。
%in%:
值匹配,并且"返回其第二个参数的第一个(第一个)匹配位置的向量”,返回逻辑值。
a[a %in% b] ## 提取a,b共有元素
sum(a %in% b) ## 统计共有元素的个数
a[ !a %in% b] ## 提取仅在a中存在的元素
严格区分%in%的两侧向量的放置顺序
如果要从a中提取元素,那么a一定要放在%in%前面。
which(a[a %in% b])
返回的是a[a %in% b]中为TRUE的位置索引
==
逻辑运算符,比较两个事物是否完全相等。
x == y
# 把x的第一个元素与y的第一个元素进行比较,
# x的第二个元素与y的第二个元素进行比较,依此类推。
# 当使用x == y时,x和y的长度必须相同。
# 比较装置"等于",输出为等于x(或y)长度的逻辑向量。
有关循环的函数:
apply:
# 对每一行执行命令,并返回结果
apply(a,1,function(x))
# 对每一列执行命令,并返回结果
apply(a,2,function(x))
lapply:
# 指定的函数对列表中每一个向量执行命令,并返回结果
# 如果a不是列表,可能会被as.list(a)强制转化成列表,如果没有强制转化就会报错。lapply()中他的对象必须是列表。
lapply(a,function(x))
sapply:
# 属于lapply的变形,可以直接返回一个包含所有元素的向量
sapply(a, function(x))
tapply:
# 将函数应用于某向量的子集
# a是数值或者其他类型的向量
# index是另一个向量,长度和第一个向量相同,用来表明第一个向量中的各个元素分别属于哪一组(即分组信息)
tapply(a, index, function(x), simplify = TRUE)
do.call:
采用一个函数作为input,并将其他参数泼到函数上。
?do.call
do.call(function, args, quote = FALSE, envir = parent.frame())
arg 作为list,输入进function(x)中x
complete.cases
除去缺失值、返回逻辑值向量 is.na / na.omit
complete.cases(x)
字符串
提取字符 substr | substring
x、text需要是字符串型
substr(x, start, stop)
substring(text, first, last = 1000000L)
当start值比x中字符串的长度大时,结果会返回 ‘ “ ” ’值。
替换字符 gsub
gsub(pattern, replacement, x, ignore.case = FALSE, perl = FALSE,
fixed = FALSE, useBytes = FALSE)
pattern:目标字符
replacement:替换字符
strsplit
unlist()
grep/grepl()
查看版本
# R中导入的所有包版本
sessionInfo()
#查询特定R包版本
packageVersion('Seurat')
调整R镜像调用窗口(当无法正常显示出来时)
chooseCRANmirror(graphics=FALSE)
快速显示配色
用于可视化已知配色编号
library(scales)
show_col(mycolor)
自定义颜色
通过已知颜色的RGB值来快速定位颜色信息
rgb(red, green, blue, alpha, names = NULL, maxColorValue = 1)
ep:
rgb(227,190,0,maxColorValue = 255)
# rgb()函数用于指定0到1之间的红、绿、蓝颜色的色度。
# 红色、绿色和蓝色的阴影也可以在 0 到 255 之间指定,使用这个范围时会增加一个参数 maxColorValue = 255。此时返回指定色度对应的十六进制代码。
对数据框的数据进行分类运算 by | with | within | transform
- by()
类似于函数tapply(),将数据框按因子类型分类后运算
# data为数据框或者矩阵,是后续进行FUN的输入数据
# INDICES为因子list,能够通过这个将data进行分类
by(data, INDICES, FUN, …, simplify = TRUE)
- with() | within() | transform()
with() | within():使用 list 或 data frame中items (variables) 评估执行R表达式expr
区别:within()
函数在评估执行R的表达式(命令)之后检查环境,并对数据的副本(a copy of data
)做出相应的更改,然后再返回带有这些更改内容的新对象。
with()
函数: 返回评估执行R表达式的值;within()
函数: 返回修改对象。
with(data, expr, ...)
within(data, expr, ...)
例:
df <- data.frame(x=c(1,2,3),y=c(5,6,8))
with(df,
{a=x+y
b=x-y
print(a)
}
)
# [1] 6 8 11
df.up <- within(df, z <- x+y)
# df.up
x y z
1 1 5 6
2 2 6 8
3 3 8 11
Transform()与within()类似。但Transform()只能用于数据框的改变。transform(数据框名,对数据框的一系列修改),修改中间用逗号分隔,不跨行。
读取.xls文件
install.packages('readxl')
library(readxl)
data <- read_excel("***.xls", sheet = 1, range = 'A6:D10',
col_names = TRUE, col_types = NULL, na = '',
trim_ws = TRUE, skip = 0, n_max = Inf,
guess_max = min(1000, n_max),
progress = readxll_progress(), .name_repair = 'unique')
# sheet:指定表格页码,默认第一个。
# range:指定读取区域,优先级在sheet/skip/n_max前。
# col_names: TRUE默认读取第一行为列名。如果为FALSE就自定义。可指定col_types中的向量
更新ing