写在前面的话
● 以上都是R语言的函数,不要以为函数一定是XXX(), 长得奇怪的%in%, [], +, -, <,>都是函数,不要歧视这些
● 要理解函数的用法,就是要知道 I/O (Input/Output)输入和输出
● 当然要了解I/O, 最好的办法就是上机操作该函数,就是把各种稀奇古怪的input扔进去,观察output,进行深刻理解
%in% 是一个需要前后 都要有输入的函数,前后的输入都是向量,x %in% y 的意义是 向量x在y中么
输入: 向量x和向量y; 输出: 向量x长度一个逻辑向量, 向量x中元素在y中就是TRUE, 无就是FALSE。
x = c(1,3,5,1)
y = c(3,2,5,6)
x %in% y # 返回x长度的逻辑向量, x 的每个元素在y中存在吗 x in y 么 ?
[1] FALSE TRUE TRUE FALSE
sort(x) 是对向量x进行排序的函数
输入: 向量x,输出: 如果x是数值向量,输出为升序排序后的数值向量,如果x是字符向量,输出为字母顺序的字符向量
scores = c(100,59,73,95,45)
sort(scores)
[1] 45 59 73 95 100
x <- c("C","D","A","B","E")
sort(x)
[1] "A" "B" "C" "D" "E"
rank(x) 是求向量元素秩的函数
输入: 向量x,输出: 这个向量中对应元素的升序排名值的向量, 注意:输入可以是字符向量,输出可能会有小数
scores = c(100,59,73,95,45)
rank(scores)
[1] 5 2 3 4 1
scores = c(100,59,73,95,45,59)
rank(scores)
[1] 6.0 2.5 4.0 5.0 1.0 2.5
x <- c("C","D","A","B","E","B")
rank(x)
[1] 4.0 5.0 1.0 2.5 6.0 2.5
order(x) 是求向量元素排名后,对应原向量位置的函数
输入: 向量x,输出: 升序排列后,对应的元素所在原向量x中的索引号向量,注意:sort(x)等同于x[order(x)],输出是自然数向量;向量x中有相同值的元素,早出现的在输出中越靠前
scores = c(59,100,59,73,95,45,59)
order(scores)
[1] 6 1 3 7 4 5 2
scores[order(scores)]
[1] 45 59 59 59 73 95 100
match(x,y) 是求向量x的元素, 在向量y中位置的函数
输入: 向量x 和 向量y,输出: 一个与向量x等长的向量,但是它并非返回逻辑向量,而是遍历了向量x里面的一个个元素,判断它们是否在向量y中出现过,如果出现就返回在y中的索引号,如果没有出现,就返回NA。向量x为模板向量,y中元素向x看齐
x <- c("A","B","C","D","E");x
[1] "A" "B" "C" "D" "E"
y <- c("B","D","E","A","C") ;y
[1] "B" "D" "E" "A" "C"
match(x,y)
[1] 4 1 5 2 3
y[match(x,y)]
[1] "A" "B" "C" "D" "E"
#######################################
x <- c("A","B","C","D","E","F");x
[1] "A" "B" "C" "D" "E" "F"
y <- c("B","D","E","A","C") ;y
[1] "B" "D" "E" "A" "C"
match(x,y)
[1] 4 1 5 2 3 NA
y[match(x,y)]
[1] "A" "B" "C" "D" "E" NA
y[match(x,y)] 使用口诀 “谁在外面就在后面,中间是模板”,