函数全纪录
base包:
names():
这个函数可以返回一个向量,显示的是用做参数的类型里所有可以用"$"访问的变量名。
|
length(x): 返回x的长度 |
tail(c/dataframe,n): 取向量/数据框最后几行 |
head(c/dataframe,n ); 取向量/数据框前面几行 |
cat()函数,后面的参数任意多,用来将所有参数连接起来,并且输出到显示屏。如果作为函数返回,返回NULL |
stop()函数,在显示屏输出,ERROR+参数内容。 |
summary()函数用来查看统计结果。 |
methods()参数是泛型函数的函数名,可以用来查看函数支持输入的类对象有哪些。 |
加载包:library(packagename);卸载包:detach(package:packagename) |
search()和ls()结合使用: 命令 search()可以告诉你哪些包已加载并可使用。 search() [1] ".GlobalEnv" "package:cluster" "package:scatterplot3d" "tools:rstudio" [5] "package:stats" "package:graphics" "package:grDevices" "package:utils" [9] "package:datasets" "package:methods" "Autoloads" "package:base" 如果我们想看".GlobalEnv" 就可以键入 ls(1),如果想看"package:cluster" 中的变量函数就可以键入ls(2),依次类推。 ls()不带参数,默认ls(1) ls还可以带一个pattern参数,这个参数可以模糊匹配,例如想要找到包含字母"a"的变量,可以使用ls(pattern="a") |
jitter(x) 函数,给向量x上的每个数增加一个小的噪声。 |
apply()
函数,可将一个任意函数“应用”到矩阵、数组、数据框的任何维
度上。
apply
函数的使用格式为:
apply(x,MARGIN,FUN,...)
其中,
x
为数据对象,
MARGIN
是维度的下标,
FUN
是由你指定的函数,而
...
则包括了任何想传
递给
FUN
的参数,例如有一个函数f(x,y,z),调用函数apply(dataframe,1,f,2,3),表示在dataframe的每一行调用f(x,2,3)。在矩阵或数据框中,
MARGIN=1
表示行,
MARGIN=2
表示列。
apply(algae,1,function(x)sum(is.na(x)))指令解释:统计数据框algae每行数据有多少个缺失值。
|
sapply(a,fun)函数的第一个参数是一个向量/矩阵,第二个参数为一个函数。 此函数的作用是将a的每一个元素都运用fun并返回所有结果。 USE.NAMES 参数 : 默认为TRUE,如果a是字符串,a变化前的值会成为变化后的值的names属性. |
lapply(X, FUN, ...):list的apply函数,在list里的每一个元素调用fun。 例如: x <- list(a = 1:10, beta = exp(-3:3), logic = c(TRUE,FALSE,FALSE,TRUE)) lapply(x, mean) 输出: $a [1] 5.5 $beta [1] 4.535125 $logic [1] 0.5 |
tapply(X, INDEX, FUN, ..., simplify = TRUE): 使用例子: height <- c(174, 165, 180, 171, 160) sex<-c("F","F","M","F","M") tapply(height, sex, mean) F M 170 170 |
mapply(FUN, ..., MoreArgs = NULL, SIMPLIFY = TRUE, USE.NAMES = TRUE): 这个函数很有用,可以执行FUN函数多次 例子说明: mapply(rep, 1:4, 4:1) 意思是执行了: rep(1,4) rep(2,3) rep(3,2) rep(4,1) 输出为: [[1]] [1] 1 1 1 1 [[2]] [1] 2 2 2 [[3]] [1] 3 3 [[4]] [1] 4 |
取消科学计数法
options(scipen=200):
options( java.parameters = "-Xmx4000m")
增加正在使用的窗口的java虚拟机内存.
|
函数
aperm(a, perm)
可以用来重排一个数组
a
例如:
> B <- aperm(A, c(2,3,1))
解释:A是一个三维数组用A[i,j,k]表示,则c(2,3,1)表示交换i,j,k的位置,B就表示三维
数组A[j,k,i]
|
diag()
函数
diag()
的含义依赖于它的参数。当
v
是一个向量时,
diag(v)
返回以该向
量元素为对角元素的对角矩阵。当
M
是一个矩时,
diag(M)
返回
M
的对角元素。
这和
Matlab
中
diag()
的用法完全一致。不过有点混乱的是,如果
k
是单个值
4
,那
么
diag(k)
的结果就是
k
×
k
的方阵!
用例:
> diag(3)
[,1] [,2] [,3] [1,] 1 0 0 [2,] 0 1 0 [3,] 0 0 1 > diag(c(1:3)) [,1] [,2] [,3] [1,] 1 0 0 [2,] 0 2 0 [3,] 0 0 3 > diag(array(1:16,c(4,4))) [1] 1 6 11 16 |
矩阵求逆,
solve函数
> solve(A,b)
求解线性方程组,并且返回
x (
可能会有一些精度丢失
)
。注意,在线性代数里面该值
表示为
x
=
A
¡1
b
,其中
A
¡1
表示
A
的
逆
(
inverse
)。矩阵的逆可以用下面的命令计
算,
solve(A)
不过一般很少用到。在数学上,用直接求逆的办法解
x <- solve(A) %*% b
相比
solve(A,b)
不
仅低效而且还有一种潜在的不稳定性。
用于多元计算的二次型
x
0
A
¡1
x
可以通过
5
像
x %*% solve(A,x)
的方式计算得到,
而不是直接计算
A
的逆。
|
求矩阵特征值和特征向量
eigen()函数。
> a
[,1] [,2] [,3] [,4] [1,] 1 5 9 13 [2,] 2 6 10 14 [3,] 3 7 11 15 [4,] 4 8 12 16 > eigen(a) $values [1] 3.620937e+01 -2.209373e+00 -1.050249e-15 8.203417e-16 $vectors [,1] [,2] [,3] [,4] [1,] -0.4140028 -0.82289268 0.4422036 -0.1001707 [2,] -0.4688206 -0.42193991 -0.3487083 0.5349238 [3,] -0.5236384 -0.02098714 -0.6291942 -0.7693354 [4,] -0.5784562 0.37996563 0.5356989 0.3345823 |
计算矩阵行列式,
prod()函数:
a同上:
> prod(a)
[1] 2.092279e+13 |
矩阵奇异值分解,
svd()函数:
函数
svd(M)
可以把任意一个矩阵
M
作为一个参数
,
且对
M
进行奇异值分解。这包括
一个和
M
列空间一致的正交列
U
的矩阵,一个和
M
行空间一致的正交列
V
的矩阵,以及
一个正元素
D
的对角矩阵,如
M = U %*% D %*% t(V)
。
D
实际上以对角元素向量的形
式返回。
svd(M)
的结果是由
d, u
和
v
构成的一个列表。
|
计算频率函数
table():
单个因子会把各部分数据分成不同的组。类似的是,一对因子可以实现交叉分组
等。函数
table()
可以从等长的不同因子中计算出频率表。如果有
k
个因子参数,那
么结果将是一个
k-
维的频率分布数组。
table函数参数的数量,决定了这个函数计算频数的方法。可以试着运行一下指令查看结果:
> table(c(1:4,2:4))
> table(c(1:4,1:4),c(2,3,3,5,2:5))
table函数在多变量的情况下要保证每个变量的长度相同。
|
生成连续区间的函数
cut():
cut()函数可用两个参数,两个参数都应该是向量,第一个向量表示要统计其所属区间的数字,第二个向量表示各个区间的中间数。
运行一下指令:
> cut(c(36:47),35+10*(0:7))
[1] (35,45] (35,45] (35,45] (35,45] (35,45] (35,45] (35,45] (35,45] (35,45] (35,45] (45,55] (45,55] Levels: (35,45] (45,55] (55,65] (65,75] (75,85] (85,95] (95,105]
可以看到Levels 就是生成的连续区间。
|
赋值函数
assign():
assign("x", c(10.4, 5.6, 3.1, 6.4, 21.7)) 等价于 x<-
c(10.4, 5.6, 3.1, 6.4, 21.7)
|
生成有固定步长的向量函数,
seq:
seq(-5, 5, by=.2) -> s3
将向量
c(-5.0, -4.8, -4.6, ..., 4.6, 4.8, 5.0)
赋给
s3
|
is.na()、is.nan()判断空值和非数字符号。 |
类型转换函数
as.something():
例如:
as.character()
as.integer()
|
将数据框、列表中的局部变量当做全局变量使用的attach()函数和去除绑定的函数
detach():
函数
attach()
除了可以用目录路径作为参数,也可以使用数据框。
假定数据
框
lentils
有三个变量
lentils$u, lentils$v, lentils$w
,那么
> attach(lentils)
使用以上指令之后可以使用如下指令直接访问,u,v,w
>u
>v
>w
用了attach函数之后,要真正改变数据框中的变量还是要使用
lentils$u <- v+w这样的写法。
去除数据框绑定,直接使用函数detach()不需要使用参数。
|
显示矩阵、数组的维度名字的函数
dimnames():
例如将矩阵temp的行列标识去掉:
> temp <- X
>dimnames(temp) <- list(rep("", nrow(X)), rep("", ncol(X)))
|
which(x)函数: 这个函数的参数是一个布尔向量或布尔矩阵,which找出所有TRUE的位置对应的索引号。 |
ifelse(test,yes,no): test为TRUE,返回yes否则返回no。 |
rownames(): 取矩阵的行名。 |
colnames(): 取矩阵的列名。 |
split(x,list)函数: split.data.frame: 用在dataframe上的spit函数,是返回一个列表,这个列表按照参数list进行分组。 |
get(x, pos = -1, envir = as.environment(pos), mode = "any", inherits = TRUE): 这个函数很吊,可以根据变量名来获得命名空间的变量,例如: > op $bg [1] "white" > get("op") $bg [1] "white" |
choose(n,m): 从总体n中挑出m个的组合数。 |
pretty(x, n): 创建美观的分割点。通过选取n+1个等间距的取整值,将一个连续的变量x分割为n个区间。绘图常用 |
rm(x): 删除变量 |
unique(x): x是一个向量,unique用来去重. |
unlist(list): 将list转化成一个向量 |
attr(x, which):
取特殊属性值或者给特殊属性赋值
|
print(x)/
str(x):
这两个函数用来打印结果。
|
getwd():
获取回话窗口当前路径。
|
help(package=base):
help函数可以用来查函数文档,也可以像上面这样来查package的文档。
|
vector(mode = "logical", length = 0):
初始化特定长度的向量。
|
readLines(path,encoding = "unknown"): 例子: QQrecords <- readLines("C:\\Users\\wuchlong\\Documents\\QQrecords.txt", encoding = "UTF-8") |
with(data,common)函数:
with函数用来控制局部变量,data中的变量只能在with中使用
|
util包
install.packages("pkgname"): 下载包,如果不带参数。表示查看当前已经在R中安装的包。 |
library(pkgname): 加载包进R,如果不带参数表示当前R中已经加载的包。 |
old.packages(): 检查CRAN上是否有已安装的R添加包的更新版本。 |
update.packages(): 更新所有已安装的R软件包。 |
产生交互界面供分析人员编辑数据的函数edit()函数:
如果需要编辑矩阵和数据框,例如a是一个矩阵,则使用以下指令会弹出窗口:
>edit(a)
|
example()函数: 这个函数会为你显示函数说明文档中的例子。 例如,执行: example(seq); 执行以上语句,seq说明文档中的例子就会被显示出来。 |
?? 函数: 就是用来查看帮助文档的。 |
write.csv函数,用来导出文件: 例子: write.csv(cl12$centers, file = "C:\\Documents and Settings\\yanghuanbin\\桌面\\foo.csv") |
write.table函数,示例代码: write.table(QQrecords2,"/root/已处理.txt", quote = F, row.names = FALSE, col.names = FALSE) |
combn(n,m): 在n个数中,挑出所有组合,组合的容量为m。 例子: combn(5,2) [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [1,] 1 1 1 1 2 2 2 3 3 4
[2,] 2 3 4 5 3 4 5 4 5 5
|
help.search(string):
help.search函数可以用来搜索符合string描述的内容。例如:
help.search("linear models")
|
read.table(.....)
这个函数用来按分隔符读取文件,成一个data.frame
|
stats包:
t.test(x, y) 函数用来比较两个样本x和y的均值和方差,就是T检验,检验均值和方差。 t.test(x)函数用来计算样本x的期望置信区间。 |
prop.test(n, x)函数可以用来计算x个样本n次出现目标数据的比例的置信区间 |
函数qqPlot(x),此函数给出正态分布的95%置信区间的带状图。 |
cor()函数的功能是产生变量之间的相关值矩阵。symnum()函数,使相关系数变得更容易观察。 |
lm()函数用来获取形如的线性模型。 |
最小二乘法,函数lsfit():
函数
lsfit()
返回最小二乘法拟合(
Least squares ¯tting
)的结果列表。赋值可
以采用入下命令
> ans <- lsfit(X, y)
|
complete.cases(dataframe): 返回一个向量,此向量标志了dataframe里哪些行没有空值。 |
predict函数: 在stats包中有predict.lm和predict.glm两个函数。这两个函数用来预测拟合后的直线结果。 x <- rnorm(15) y <- x + rnorm(15) predict(lm(y ~ x)) new <- data.frame(x = seq(-3, 3, 0.5)) predict(lm(y ~ x), new, se.fit = TRUE) |
spline()函数:
三次插值函数,假设x,y是长度为20的一对向量。
则使用spline(x,y)会形成一个含有x,y两个因子的列表。并且x,y的长度都为60。从min(x)到max(x)将数字平均分成60份,赋值到list$x中,y也进行了同样的处理。
可以设置为spline(x,y,n=100),设置了n参数,就会将数据分成n份。
|
ftable(table/ftable):
以一个容易被理解的形式现实多维列联表:
ftable(table(c(1:4,1:4),c(2,3,3,5,2:5),c(2,3,3,5,2:5)))
|
lattice包
equal.count(na.omit(algae$mnO2),number=4,overlap=1/5) 指令解释为,忽略algae$mnO2中的缺省值,将algae$mnO2的数转化成4个区间,每个区间的数据个数相同,overlap设置两个区间之间靠近边界的重合(这意味着某些观测值将被分配到两个区间),na.omit()函数将数据框中含有缺失值的行剔除,并返回剔除后的结果,函数在lattice包中。 |