对象:R 的构建块

面向 SAS 用户的 R

Melinda Higgins, PhD

Research Professor/Senior Biostatistician Emory University

对象是 R 的构建块

  • R 中一切皆对象
  • 单个值(标量)
  • 向量
  • 矩阵
  • 数据集
  • 函数输出

对象 abc 构建块

面向 SAS 用户的 R

处理单个元素

  • 创建对象 x
  • 将 4 赋给 x
  • 查看 x 的内容
  • [1] 表示 x 有 1 个元素
  • 创建 y 为 x 的平方
  • 查看结果,输入 y
x <- 4
x
[1] 4
y <- x * x
y
[1] 16
面向 SAS 用户的 R

其他类型的元素

  • 将单词 "fish" 赋给 y
  • 将逻辑值 FALSE 赋给 z
  • 查看 yz
y <- "fish"
z <- FALSE
y
z
[1] "fish"

[1] FALSE
面向 SAS 用户的 R

将单个元素合并为向量

# 合并三个数字
c(5, 3, 2)

三个数字 5 3 2

面向 SAS 用户的 R

将单个元素合并为向量

# 将数值向量赋给 x
x <- c(5, 3, 2)

# 查看结果
x

结果

[1] 5 3 2

5 3 2 合并成列向量

面向 SAS 用户的 R

创建字符向量

# 将单词 child 加入字符向量
y <- c("child")

合并三个单词 child

面向 SAS 用户的 R

创建字符向量

# 添加第二个单词 young
y <- c("child", "young")

young

面向 SAS 用户的 R

创建字符向量

# 添加第三个单词 old
y <- c("child", "young", "old")

# 查看 y
y

结果

[1] "child" "young" "old"

old

面向 SAS 用户的 R

创建逻辑向量

# 将 TRUE 加入逻辑向量
z <- c(TRUE)
  • 第一项为 TRUE
  • 不需要双引号
  • 逻辑值为 TRUEFALSE
  • 必须使用 ALL CAPS
  • 也可用 TF

合并三个逻辑值 true 全大写

面向 SAS 用户的 R

创建逻辑向量

# 将 FALSE 作为第二项
z <- c(TRUE, FALSE)

false 全大写

面向 SAS 用户的 R

创建逻辑向量

# 添加第三项 TRUE
z <- c(TRUE, FALSE, TRUE)

# 查看 z
z

结果

[1]  TRUE FALSE TRUE

true 全大写

面向 SAS 用户的 R

由向量创建矩阵

#  创建数值向量 a
a <- c(5.0, 3.1, 2.4)
  • 矩阵由向量创建
  • 向量需同类型且等长

第一个向量 数字 5.0 3.1 2.4

面向 SAS 用户的 R

由向量创建矩阵

#  创建数值向量 a
a <- c(5.0, 3.1, 2.4)

#  创建数值向量 b
b <- c(4.1, 2.2, 5.4)

第二个向量 4.1 2.2 5.4

面向 SAS 用户的 R

由向量创建矩阵

# 用 a、b 生成 3 行 2 列的 m
m <- matrix(c(a, b),
            nrow = 3,
            ncol = 2)

# 查看 m
m
          [,1] [,2]
     [1,]  5.0  4.1
     [2,]  3.1  2.2
     [3,]  2.4  5.4

向量合并成 3 行 2 列矩阵

面向 SAS 用户的 R

由向量创建数据框

# 创建数值变量 score
score <- c(5.0, 3.1, 2.4)

# 查看 score
score
     5.0 3.1 2.4
  • 数据框由向量创建
  • 向量需等长
  • 向量可为不同类型

数值向量,包含 5.0 3.1 2.4

面向 SAS 用户的 R

由向量创建数据框

# 创建字符变量 age
age <- c("child","young","old")

# 查看 age
age
     "child" "young" "old"

字符向量,包含 child young old

面向 SAS 用户的 R

由向量创建数据框

# 创建逻辑变量 test
test <- c(TRUE, FALSE, TRUE)

# 查看 test
test
     TRUE FALSE TRUE

逻辑向量 true false true

面向 SAS 用户的 R

由向量创建数据框

# 合并创建数据框
d <- data.frame(score, age, test)

# 查看数据框
d
     score   age  test
       5.0 child  TRUE
       3.1 young FALSE
       2.4   old  TRUE

三个向量合并为数据框

面向 SAS 用户的 R

确定对象类型

  • 创建数值向量 x
  • 查看 xclass
  • 查看 x 的结构 str
x <- c(5, 3, 2)
class(x)
 [1] "numeric"
str(x)
 num [1:3] 5 3 2
面向 SAS 用户的 R

确定对象类型

  • 字符向量 y;逻辑向量 z
  • 查看 yzclass
  • 查看 yz 的结构 str
str(y)
 chr [1:3] "child" "young" "old"
str(z)
 logi [1:3] TRUE FALSE TRUE
y <- c("child","young","old")
z <- c(TRUE, FALSE, TRUE)
class(y)
 [1] "character"
class(z)
 [1] "logical"
面向 SAS 用户的 R

确定对象类型

  • 创建矩阵 m
  • 获取 m 的 class
  • 查看 m 的结构 str
str(m)
 num [1:3, 1:2] 5 3.1 2.4 4.1 2.2 5.4
a <- c(5.0, 3.1, 2.4)
b <- c(4.1, 2.2, 5.4)
m <- matrix(c(a, b),
            nrow = 3,
            ncol = 2)
class(m)
 [1] "matrix"
面向 SAS 用户的 R

确定对象类型

  • 创建 data.frame d
  • 获取 dclass
  • 查看 d 的结构 str
str(d)
'data.frame':    3 obs. of 3 variables:
 $ score: num  5 3.1 2.4
 $ age  : Factor w/ 3 levels
         "child","old",..: 1 3 2
 $ test : logi  TRUE FALSE TRUE
score <- c(5.0, 3.1, 2.4)
age <- c("child","young","old")
test <- c(TRUE, FALSE, TRUE)
d <- data.frame(score, age, test)
class(d)
 [1] "data.frame"
1 此处为 3 个年龄类别自动创建了因子(Factor)类型。
面向 SAS 用户的 R

在 R 中创建并操作数据对象

面向 SAS 用户的 R

Preparing Video For Download...