1. 矩阵的广义逆
library(MASS)
?ginv
2. 画三维图
library(lattice)
x=seq(1:10)
y=seq(1:10)
z=seq(1:10)
print(cloud(z~x*y))
3. order,sort,rank函数排序结果的解释
x <-c(1,7,6,0)
sort(x)
#[1] 0 1 6 7
order(x)
#[1] 4 1 3 2
rank(x)
#[1] 2 4 3 1
sort函数最容易理解,就是对原始数值排序,从小到大或者从大到小都可以。
order函数输出的则是原始索引,变换过程如下:
rank函数,顾名思义,是按数值大小进行冠亚季军形式的排序,但是并不改变原始序列。
在上例中,升序排序结果应该是0,1,6,7,也就是说,0是冠军,序号为1;1是亚军,序号为2;6是季军,序号是3;7是第四名,序号是4. 对于原始序列1,7,6,0,rank函数告诉你:1的序号是2;7的序号是4;6的序号是3;0的序号是1,所以输出是2,4,3,1.
4. 向量的内积(点乘)
x %*% y就表示求向量x和向量y的内积,或者用crossprod(x,y)
5. R程序可以编译成可执行程序(*.exe)吗?
目前还做不到,只能通过其他方式来实现这样的效果,但是前提都要安装R语言的运行环境。比如在Windows中,通过在批处理文件中运行R语言命令行的方式,可以实现让用户双击.bat文件来运行R程序。
6. 求导函数
使用D或者deriv或者deriv3函数,以下是一个例子:
## Higherderivatives:
DD <-function(expr, name, order = 1) {
if(order < 1) stop("'order' mustbe >= 1")
if(order == 1) D(expr, name)
else DD(D(expr, name), name, order - 1)
}
DD(expression(sin(x^2)),"x", 3)
#-(sin(x^2) *(2 * x) * 2 + ((cos(x^2) * (2 * x) * (2 * x) + sin(x^2) *
# 2) * (2 * x) + sin(x^2) * (2 * x) * 2))
7. 设定随机数的种子
set.seed()
设定随机数种子是为了让实验结果可以重现,能够使程序的调试变得方便,但是跟现实情况是相背离的,在最终的程序中,不应该设立随机数种子。
8. 产生多元正态分布的函数
MASS包中的mvtnorm函数
9. strsplit函数对字符串进行分割
x<-"12 24 384 987"
y<- unlist(strsplit(x," "))
y
[1] "12" "24" "384" "987"
还有一个常见的应用,把字符串分解成字符向量:
A <- 'abcde'
B <- strsplit(A,'')
unlist(B)
[1] "a" "b" "c""d" "e"
10. system.time记录时间函数
system.time()
11. 时间类型数据转换的问题!
首先设置当前语言环境,这个环境需要能够认出日期字符串,比如中文环境下,可以认出’六月’,英文环境则不行,设置环境的代码如下:
lct <- Sys.getlocale("LC_TIME")
Sys.setlocale("LC_TIME", "C")
然后:
da<-"10-Jun-98"
as.Date(da,format="%d-%b-%y")
返回:“1998-06-10”
12. 获得字符的ASCII码
charToRaw("a")
13. 从CRAN Task Views看R的用途
Bayesian | Bayesian Inference |
ChemPhys | Chemometrics and Computational Physics |
Cluster | Cluster Analysis & Finite Mixture Models |
Distributions | Probability Distributions |
Econometrics | Computational Econometrics |
Environmetrics | Analysis of Ecological and Environmental Data |
ExperimentalDesign | Design of Experiments (DoE) & Analysis of Experimental Data |
Finance | Empirical Finance |
Genetics | Statistical Genetics |
Graphics | Graphic Displays & Dynamic Graphics & Graphic Devices & Visualization |
gR | gRaphical Models in R |
HighPerformanceComputing | High Performance and Parallel Computing |
MachineLearning | Machine Learning & Statistical Learning |
Multivariate | Multivariate Statistics |
NaturalLanguageProcessing | Natural Language Processing |
Optimization | Optimization and Mathematical Programming |
Pharmacokinetics | Analysis of Pharmacokinetic Data |
Psychometrics | Psychometric Models and Methods |
Robust | Robust Statistical Methods |
SocialSciences | Statistics for the Social Sciences |
Spatial | Analysis of Spatial Data |
Survival | Survival Analysis |
TimeSeries | Time Series Analysis |
随着R的发展,Task Views分项越来越多了,记得几年前R的Task Views只有那么寥寥几项!现在Task Views的分类很多,涉及的领域也很广,不仅仅研究计量、时间序列,还有很多统计、数据挖掘、生物、信息、环境等研究者也在用R。相信,再过一段时间Task Views的分类又会增添好多!
Tips:从Task Views里找各个packages的作用,以及寻找您说需要的函数是最快捷的!
14. read.table导入中文乱码的问题
read.table("xxx.txt",encoding = "UTF-8")
15. kmeans函数中的nstart参数
意义为重复做kmeans算法的次数,每次的中心center都是随机选取的。一般对于大数据集,选择20或25。