Advertisement

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

全部评论 (0)

还没有任何评论哟~