R Cheat Sheet (4): Vector

  R中的矢量(vector)可以分为两类:原子矢量(atomic vector)和列表(list),前者只包含同一种数据类型,后者则包含多种数据类型。根据所包含的数据类型,atomic vector有数字(numeric)、逻辑(logical)、字符(character)、整数(integer)、和复数(complex)等几类。

1. Numeric vector

  Numeric vector如:

> num_vect <- c(0.5, 55, -10, 6)
> num_vect
[1]   0.5  55.0 -10.0   6.0

2. Logical vector

  使用num_vect < 1 判断num_vect 中各元素是否小于1,可以得到一个logical vector:

> tf <- num_vect < 1
> tf
[1]  TRUE FALSE  TRUE FALSE

这里的小于号< 是逻辑运算符,其他逻辑运算符还有小于等于<= 、大于> 、大于等于>= 、等于== 、不等于!= ,如:

> num_vect >= 6 
[1] FALSE  TRUE FALSE  TRUE
> (3 > 5) & (4 == 4)
[1] FALSE
> (TRUE == TRUE) | (TRUE == FALSE)
[1] TRUE
> ((111 >= 111) | !(TRUE)) & ((4 + 1) == 5)
[1] TRUE

3. Character vector

  生成character vector的方法与生成numeric vector类似:

> my_char <- c("My", "name", "is")
> my_char
[1] "My"   "name" "is"

 注意character vector的长度是vector中元素的个数,不是总字符数:

> length(my_char)
[1] 3

   使用paste() 函数可以将character vector中的各个元素拼接为一个完整的字符串:

> paste(my_char, collapse = " ") 
[1] "My name is"

其中collapse = ” “ 表示使用空格来分隔character vector中的各个元素。

   使用c() 可以直接拼接character vector:

> my_name <- c(my_char, "Obama")
> my_name
[1] "My"    "name"  "is"    "Obama"
> paste(my_name, collapse = " ") 
[1] "My name is Obama"

  paste() 函数也可以直接作用于字符串或两个vector:

> paste("Hello", "world!", sep = " ")
[1] "Hello world!"
> paste(1:3, c("X", "Y", "Z"), sep = "")
[1] "1X" "2Y" "3Z"
> paste(LETTERS, 1:4, sep = "-")
 [1] "A-1" "B-2" "C-3" "D-4" "E-1" "F-2" "G-3" "H-4" "I-1" "J-2" "K-3" "L-4" "M-1" "N-2" "O-3" "P-4" "Q-1" "R-2" "S-3" "T-4" "U-1" "V-2"
[23] "W-3" "X-4" "Y-1" "Z-2"

 paste() 作用于两个vector时,两个vector会被转换为character vector,其中的元素会被一一对应地拼接起来;当两个vector不等长时,短的vector会被循环使用。

 

.