R语言介绍与R语言数据集
R
R语言编程常见错误
使用错误的大小写
忘记使用必要的引号
在函数调用时忘记加括号
路径名使用反斜杠\(R将其视为转义符):
正确格式:C:\ mydata or c:/mydata
使用了一个尚未载入包的函数
批处理
偶尔我们可能会希望以一种周期性的、规范化的、无需人工干预的方式运行某个R程序。例如:或许需要每月自动生成一份统一格式的报告。此时可以在R环境中开发一个脚本,在批量处理模式下运行该脚本以实现目标。
“C:\program Files\R\R-4.0.0\bin\R.exe” CMD BATCH
→–vanilla --slave “c:\my projects\myscript.R”
将路径调整为R.exe所在的相应位置和脚本文件所在的位置。
将输出用为输入:结果的重用
R突出特点:分析的输出结果可轻松保存,并作为进一步分析的输入使用。
help(lm)
示例实践
(1) 打开帮助文档首页,并查阅其中的“Introduction to R”。
(2) 安装vcd包(一个用于可视化类别数据的包,你将在第11章中使用)。
(3) 列出此包中可用的函数和数据集。
(4) 载入这个包并阅读数据集Arthritis的描述。
请查看数据集中的Arthritis信息(通过输入一个对象名称即可查看其详细内容)。
调用Arthritis数据集提供的示例代码,在实际操作中如果对输出结果不理解也不必忧虑。该分析结果表明接受治疗的效果显著优于使用安慰剂方案。
(7) 退出。
help.start()
install.packages("vcd")
help(package="vcd")
library("vcd")
help(Arthritis)
Arthritis
example(Arthritis)
q()
数据集
R中对象是指能够被赋值为变量的各种类型的事物,并非仅限于简单的数值或符号;不仅包含常量、数据结构和函数等基本元素,并且也包含图形元素。
R可处理的数据类型包括数值型、字符型、逻辑型、复数型和原生型(字节)
R语言包含多种多样化的数据存储结构,并非仅仅局限于单一类型的变量或对象。具体来说,在R语言中我们可以区分出标量变量(Scalar)、向量(Vector)、矩阵(Matrix)、数组(Array)、数据框(Data frame)以及列表(List)等多种不同的数据存储形式。
标量:只含有一个元素的向量,例如f <- 3,用于保存常量
向量:用于存储数值型、字符型或逻辑型数据的一维数组
a <- c(1,2,5)
b <- c("one","two")
c <- c(TRUE,TRUE,FALSE)
矩阵:二维数组。且每个元素都有相同的模式.
cells <- c(1,26,24,68)
rnames <- c("R1","R2")
cnames <- c("C1","C2")
mymatrix <- matrix(cells, nrow=2, ncol=2, byrow=TRUE, dimnames=list(rname,cname))
> mymatrix
C1 C2
R1 1 26
R2 24 68
数组:与矩阵类似,但维度可以大于2
> dim1 <- c("A1", "A2")
> dim2 <- c("B1", "B2", "B3")
> dim3 <- c("C1", "C2", "C3", "C4")
> z <- array(1:24, c(2, 3, 4), dimnames=list(dim1, dim2, dim3))
> z
, , C1
B1 B2 B3
A1 1 3 5
A2 2 4 6
, , C2
B1 B2 B3
A1 7 9 11
A2 8 10 12
, , C3
B1 B2 B3
A1 13 15 17
A2 14 16 18
, , C4
B1 B2 B3
A1 19 21 23
A2 20 22 24
数据框
> patientID <- c(1, 2, 3, 4)
> age <- c(25, 34, 28, 52)
> diabetes <- c("Type1", "Type2", "Type1", "Type1")
> status <- c("Poor", "Improved", "Excellent", "Poor")
> patientdata <- data.frame(patientID, age, diabetes, status)
> patientdata
patientID age diabetes status
1 1 25 Type1 Poor
2 2 34 Type2 Improved
3 3 28 Type1 Excellent
4 4 52 Type1 Poor
> patientdata$age
[1] 25 34 28 52
- $
例子中的记号$用于提取数据框中的某个特定变量。 附着函数、解附着函数和结合函数
在每个变量名前都输入一次patientdata$可能会让人感到厌烦, 所以不如采取更加便捷的方式. 可以同时调用函数attach()和detach(), 或者单独调用函数with(), 这样能够简化代码.
函数attach()可将数据框添加到R的搜索路径中。
该函数通过detach()方法将数据框从系统搜索路径中分离。值得注意的是,在使用 detach() 时不会对原始数据框进行修改。通常情况下建议在代码中添加这一行以避免潜在的问题。这并非强制性要求。
函数attach()和detach()在理想情况下用于在一个单一的数据框架内进行操作,并且当不存在多个具有相同名称的对象时更为合适。
该函数的语法格式为:with(xxx,{print(summary(x))plot()})其中位于花括号{}内的所有语句都会针对名为xxx的数据框执行。当仅包含一条指令(如summary(x))时,上述花括号{}可以省略。
函数with()的局限性在于,赋值仅在此函数的括号内生效。
当需要为对象创建不在 with() 结构范围内的实例时,可以通过采用特殊的 <<- 运算符来代替传统的 <- 运算符完成这一任务。该操作会将目标对象保留在与当前 with() 环境不同的全局存储中。
因子:类别(名义型)变量和有序类别(有序型)变量在R中称为因子(factor)。
该函数通过一种整数编码方案来表示类别。其取值范围为1至k之间的所有整数值(其中k代表分类变量中不同类别的数量)。每个字符串则代表原始数据中的某个具体类别,并与对应的编码信息进行一一映射。
因子的使用:
> patientID <- c(1, 2, 3, 4)
> age <- c(25, 34, 28, 52)
> diabetes <- c("Type1", "Type2", "Type1", "Type1")
> status <- c("Poor", "Improved", "Excellent", "Poor")
> diabetes <- factor(diabetes)
> status <- factor(status, order=TRUE)
> patientdata <- data.frame(patientID, age, diabetes, status)
> str(patientdata)
‘data.frame’: 4 obs. of 4 variables:
$ patientID: num 1 2 3 4
$ age : num 25 34 28 52
$ diabetes : Factor w/ 2 levels "Type1","Type2": 1 2 1 1
$ status : Ord.factor w/ 3 levels "Excellent"<"Improved"<..: 3 2 1 3
> summary(patientdata)
patientID age diabetes status
Min. :1.00 Min. :25.00 Type1:3 Excellent:1
1st Qu.:1.75 1st Qu.:27.25 Type2:1 Improved :1 Median :2.50 Median :31.00 Poor:2
Mean :2.50 Mean :34.75
3rd Qu.:3.25 3rd Qu.:38.50
Max. :4.00 Max. :52.00
