写着写着 R 与统计基础莫名其妙地又写开 R 基础了,一起写吧。 常用的 常用的 数值型字符型和逻辑值,使用 向量是多个值的集合,根据变量类型的不同可以分为数值型向量,字符型向量和逻辑向量。构建向量使用函数 c()。使用 names() 函数可以为向量中的元素命名。使用 length() 函数可以返回向量长度。 获取向量子集的方法: 通过位置(index) a[1],a[2,4],a[2:4] 通过名字 a[b] 排除选择(不要某个元素) a[-2],a[-c(2:4)] 通过逻辑向量选择 a[b == TURE],a[c >= 3],a[c !=3] 针对向量的其他常用函数 矩阵可以理解为多行多列的表格,通常,列表示变量,行表示个体或者观测值。构造矩阵可以通过 构造一个两行三列的矩阵 从一个矩阵中提取子集的方法和向量类似,只不过分为行和列两个参数,行和列各自的提取方式和向量相同,[] 内第一个参数行位置,第二个参数代表列位置。 如果想使矩阵的行列互换,只需要使用 在 R 中,变量可以是连续型变量,名义型变量(无需:a,b,c)和有序变量(上,中,下)。名义型变量和有序变量也叫作因子,通过 数据框和矩阵形式类似,但是可以接受列的类型不同。其中行代表观测值或者个体,列代表变量。构建数据框可以使用 在 R 中,内置了众多各种类型的数据,可以通过 我们使用 ToothGrowth 数据集来了解 data frame。 可以发现,该数据集中 supp 为因子,分别是 VC 和 OJ(orange juice)。且两组的均值分别是 20.66333 16.96333。 同样,数据框也可以通过位置和名字信息以及逻辑值来提取子集。 有没有提取矩阵或者数据框更简便通用的方法呢?在 R 中,使用 尽管 R 可以直接输入数据,但通常会将文本文件(csv 或者 tsv)导入后进行处理。因为数据框的特点,在准备数据时,一般将第一行作为每一列的列名,而每一列代表一个变量;将第一列作为行名,而每一行代表一个观测值,且不应该出现重名。同时,行名和列明中最好用下划线代替空格,避免一些特殊符号的存在。 常用的文件格式有 txt(tab 分割),csv(, 分割)以及 Excel 生成的文件。读取两类文件,最简单的方式是通过 read.csv(): 读取“,”作为分隔符的文件 (".csv"). read.delim(): 读取“\t”作为分隔符的文件 (".txt") 上述两个命令,有几个通用的参数 对很多初学者而言,读文件往往找到不到正确的路径,在使用 Rstudio 时可以尝试使用 readr 包是一个专门用来读取数据的包,其读取文件的速度比自带函数要快 10 倍,它可以对输入数据类型进行自动判断,也可以使用 针对 Excel 产生的文件,可以使用 readxl 或者 xlsx 包进行读取。这两个包针对 Excel 文件进行了优化,readxl 可以通过 如果需要把处理过的矩阵或者数据框输出到新的文件中,可以使用 readr 包的 如果在保存数据的同时还需要保存数据类型和结构,可以使用 如果想要保存完整的工作区,可以使用 本文作者:思考问题的熊 版权声明:本博客所有文章除特别声明外,均采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 (CC BY-NC-ND 4.0) 进行许可。 如果你对这篇文章感兴趣,欢迎通过邮箱或者微信订阅我的 「熊言熊语」会员通讯,我将第一时间与你分享肿瘤生物医药领域最新行业研究进展和我的所思所学所想,点此链接即可进行免费订阅。
R 编程基础
算数运算
+ - * \ ^
可以直接在 console 中计算计算函数
log2(x) log10(x) exp(x) sin(x) tan(x) abs(x) sqrt(x)
也可以直接计算变量赋值
a <- 3;a <- "b"
赋值符号是<-
, 使用 ls() 可以显示当前已经创建的对象基本数据类型
calss()
查看变量类型。或者用is.numeric(), is.character(), is.logical()
判断是否是某一类具体类型。如果要改变变量类型,可以使用 as.numeric(), as.character(), as.logical()
……向量
range(a)
length(a)
sum(a)
prod(a)
mean(a)
sd(a)
var(a)
sort(a)
#[1] 2 7
#[1] 4
#[1] 18
#[1] 280
#[1] 4.5
#[1] 2.081666
#[1] 4.333333
#[1] 2 4 5 7
矩阵(martix)
matrix()
函数。使用方式是:matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE,
dimnames = NULL)
mdata <- matrix(
data = c(1,2,3,4,5,6,7,8,9,10,11,12),
nrow = 3, byrow = TRUE,
dimnames = list(c("r1", "r2","r3"), c("c1", "c2", "c3","c4"))
)
mdata
# c1 c2 c3 c4
# r1 1 2 3 4
# r2 5 6 7 8
# r3 9 10 11 12
nrow()
and ncol()
可以返回矩阵的行数和列数,rownames()
和colnames()
可以返回或者设置矩阵的行名和列名。
mdata[1,]
mdata[,2]
mdata[c(1,2),2]
#c1 c2 c3 c4
# 1 2 3 4
#r1 r2 r3
# 2 6 10
#r1 r2
# 2 6
mdata[,"c2"]
#r1 r2 r3
# 2 6 10
mdata[-3,"c4"]
#r1 r2
# 4 8
mdata["r3">10,c(3,4)]
# c3 c4
# r1 3 4
# r2 7 8
# r3 11 12
rowSums() colSums()
可以用来为矩阵的行列分别求和,rowMeans() 和 colMeans()
则用来计算均值。t()
函数即可。因子 (factor)
factor()
函数可以设置因子,并以数组形式储存。数据框(data.frame)
data.frame()
函数。data()
查看所有的内置函数,通过?dataname
可以了解数据相关信息。比较常用到的内置数据集有 mtcars, iris, ToothGrowth, PlantGrowth 和 USArrests。summary(ToothGrowth)
is.data.frame(ToothGrowth)
is.factor(ToothGrowth$supp)
tapply(ToothGrowth$len, ToothGrowth$supp, mean)
# len supp dose
# Min. : 4.20 OJ:30 Min. :0.500
# 1st Qu.:13.07 VC:30 1st Qu.:0.500
# Median :19.25 Median :1.000
# Mean :18.81 Mean :1.167
# 3rd Qu.:25.27 3rd Qu.:2.000
# Max. :33.90 Max. :2.000
#[1] TRUE
# OJ VC
#20.66333 16.96333
ToothGrowth$len
ToothGrowth[c(1:5),c("dose")]
#[1] 0.5 0.5 0.5 0.5 0.5
ToothGrowth[ToothGrowth$len>=30,c("len")]
# [1] 33.9 32.5 30.9
subset(x, subset, select, drop = FALSE, ...)
函数可以轻松帮我们实现提取子集的目的,通过 subset 筛选行,通过 select 来筛选列。subset(ToothGrowth, len>=20, select = supp)
subset(ToothGrowth, supp=="OJ")
关于 R 包的几个常用操作
准备数据输入数据
read.table()
可以设置任意你需要的分隔符,不过也有特殊的读取函数和上述两种文件分别对应。
my_data <- read.delim(file.choose())
命令,会有想不到的惊喜。另外,如果输入文件中,某一列是文本,R 会将其默认为因子,可以通过stringsAsFactor = FALSE
参数拒绝转换。read_lines
指定行数读取。sheet
参数指定要读入的表单,xlsx 则是通过sheetIndex
确定。输出数据
write.table()
write.table(x, file, append = FALSE, sep = " ", dec = ".",
row.names = TRUE, col.names = TRUE)
#例如
write.table(data, file = "data.txt", sep = "\t",
row.names = TRUE, col.names = NA)
write_tsv()
函数也可以完成同样的工作。如果想要保存为 Excel 文件,调用前面提到 xlsx 包,使用write.xlsx()
即可。saveRDS(object, file = "my_data.rds")
将当个项目保存为 R 特有的数据格式。如果想要重新调用,使用readRDS(file = "my_data.rds")
。save.image(file = “my_work_space.RData”)
,加载时使用load()
。如果使用 Rstudio,关闭时会提醒你是否保存。
· 分享链接 https://kaopubear.top/blog/2018-12-11-rbasic/