R函数全纪录

来源:互联网 发布:守望先锋a卡优化 编辑:程序博客网 时间:2024/05/16 07:22

函数全纪录

base包:
names():
这个函数可以返回一个向量,显示的是用做参数的类型里所有可以用"$"访问的变量名。
length(x):
返回x的长度tail(c/dataframe,n):
取向量/数据框最后几行head(c/dataframe,n );
取向量/数据框前面几行cat()函数,后面的参数任意多,用来将所有参数连接起来,并且输出到显示屏。如果作为函数返回,返回NULLstop()函数,在显示屏输出,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 170mapply(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的对角元素。这和Matlabdiag() 的用法完全一致。不过有点混乱的是,如果 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¡1b ,其中A¡1表示A inverse)。矩阵的逆可以用下面的命令计
算,
solve(A)
不过一般很少用到。在数学上,用直接求逆的办法解 x <- solve(A) %*% b相比 solve(A,b)
仅低效而且还有一种潜在的不稳定性。
用于多元计算的二次型 x0A¡1x可以通过5x %*% 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, uv构成的一个列表。
计算频率函数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包中



1 0