R中比较难重点但复杂的几个函数
示例数据
library(tidyverse)
diamonds
> x <- colnames(diamonds)[1:5]
> x
[1] "carat" "cut" "color" "clarity" "depth"
> y <- colnames(diamonds)[1:10]
> y
[1] "carat" "cut" "color" "clarity" "depth" "table" "price" "x" "y"
[10] "z"
> z <- colnames(diamonds)[seq(1,10,2)] # seq:seq(from,to,length),该函数的意思是生成一组数字,从from开始,到to结束,每两个数间的间隔是length,如
> z
[1] "carat" "color" "depth" "price" "y"
①match
匹配两个向量,返回第二个向量在第一个向量匹配位置的下标志
>match(x,y)
[1] 1 2 3 4 5
>match(y,x)
[1] 1 2 3 4 5 NA NA NA NA NA
②%in%
x%in%y: 判断x的每个元素在y中是否存在
z %in% x
[1] TRUE TRUE TRUE FALSE FALSE
③merge
merge(x, y, by = intersect(names(x), names(y)),
by.x = by, by.y = by, all = FALSE, all.x = all, all.y = all,
sort = TRUE, suffixes = c(".x",".y"), no.dups = TRUE,
incomparables = NULL, …)
#x, y: 数据框
#by, by.x, by.y:指定两个数据框中匹配列名称,默认情况下使用两个数据框中相同列名称。
#all:逻辑值; all = L 是 all.x = L 和 all.y = L 的简写,L 可以是 TRUE 或 FALSE。
#all.x:逻辑值,默认为 FALSE。如果为 TRUE, 显示 x 中匹配的行,即便 y 中没有对应匹配的行,y 中没有匹配的行用 NA 来表示。
#all.y:逻辑值,默认为 FALSE。如果为 TRUE, 显示 y 中匹配的行,即便 x 中没有对应匹配的行,x 中没有匹配的行用 NA 来表示。
#sort:逻辑值,是否对列进行排序。
④apply
apply(X, MARGIN, FUN, ...)
将一个函数同时作用于一个数组或者矩阵的一个margin(margin用来指定是对行运算还是对列运算,margin=1表示对行运算,margin=2表示对列运算),FUN用来指定运算函数;...用来指定FUN中需要的其它参数。
>x <- matrix(1:12, ncol=3)
> x
[,1] [,2] [,3]
[1,] 1 5 9
[2,] 2 6 10
[3,] 3 7 11
[4,] 4 8 12
> apply(x, 1, sum) ## 行和
[1] 15 18 21 24
> apply(x, 2, sum) ## 列和
[1] 10 26 42
> apply(x, 1, mean) ## 行平均
[1] 5 6 7 8
> apply(x, 2, mean) ## 列平均
[1] 2.5 6.5 10.5
网友评论