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会被循环使用。
.