• 注册
当前位置:1313e > 默认分类 >正文

R函数

起名时连接符最好用点 .
class(变量);mode(变量):查看变量类型
nlevels(sales$ID): 统计数据框sales中因子变量ID的个数
which(is.na(sales$Quant)): 给出数据框sales中Quant变量为NA元素的位置指标
table(sales$Insp): 统计数据框sales中Insp变量各元素出现的频率
变量类型转换: as.matrix(x);    as.numeric(x);    as.factor(x);   
str(x): 查看对象x的结构

R的apply函数系列:

a、函数 apply
apply会把一个函数同时作用于一个数组或者矩阵的一个margin,然后返回值存在一个向量或者数组中。其中margin可以是数组的行(1)或列(2)。
apply中fun自定义方法:
myfun<-function(x){
  10-sum(x)
}
error.0<-apply( data,2,myfun) 
b、 函数 lapply 和 sapply
这两个都是应用于一个vector 或 list上面,上面的apply是用于一个数组或矩阵。所以apply需要三个参数,而 lapply 和 sapply 一般需要两个参数,第一个输入数据,第二个输入函数。
不同点: sapply 返回的是一个vector; 
lapply 返回的是一个list。
>out_fileName<-sapply(2:6,function(x){paste("class",x,".csv",sep="")})
>out_fileName
[1] "class2.csv" "class3.csv" "class4.csv" "class5.csv" "class6.csv”    ## 向量类型
c、函数 tapply
通常也有三个参数,第一个为输入数据,第二个指定输入数据如何分组,第三个指定每个分组内应用什么函数。

r语言list 转换成 vector

v = as.vector(unlist(mylist[1]))
R选取子集:
subset:
score.data<-as.data.frame(score)    %做成数据框
xy1<-subset( score.data, score.data$学院编号==1)
Table:
  • test <- c(1,2,3,2,1,1,5,6,4,5,1)  
  • test1 <- table(test)  
  • test1
  • 1 2 3 4 5 6   #test中的元素  
  • 4 2 1 1 2 1   #各个元素出现的频率  
  • #1.提取table()中的元素  
  • names(test1)  
  • [1] "1" "2" "3" "4" "5" "6"  
  • #2.提取table()中的频率  
  • as.numeric(test1)  
  • [1] 4 2 1 1 2 1  
  • #3.进阶,提取table()中指定频率的数据,可先用as.data.frame()转换  
  • test2 <- as.data.frame(test1)  
  • test2  
  •   test Freq  
  • 1    1    4  
  • 2    2    2  
  • 3    3    1  
  • 4    4    1  
  • 5    5    2  
  • 6    6    1  
  • test2[which(test2$Freq==1),]  #提取出现频率为1的元素  
  •   test Freq  
  • 3    3    1  
  • 4    4    1  
  • 6    6    1 
R结果以List输出:
out.instruction<-"最后输出结果”
out.name<-c("量表","再生系数","最小边缘再生系数","再生提高百分比","可测量性系数”)
mydata<-list(title=out.instruction,"量表"=implicational.scale,"再生系数"=Crep,"最小边缘再生系数"=MMrep,"再生提高百分比"=PIR,"可测量性系数"=Cscal)
mydata #输出展示
R中单双引号:
在R中,表示 character vector 元素的可以用双引号(")或者单引号(')来括起字符串值,两者除了在包含对方时不用转意之外,是完全等价的。举个例子:
a <- "Hello, world"
b <- 'Hello, world'
上面两句是完全等价的,产生了相同的 character vector。不过,有时我们希望产生的字符串中含有定义字符串时用的引号,此时就需要转义符来表明「特定的引号不是字符串定义结束,而是一个双引号字符」,例如在产生 You should use "her" in this 'passage' 这句话:
a <- "You should use \"her\" in this 'passage'."
b <- 'You should use "her" in this \'passage\'.'
上面两句的结果也是完全相同的,差异就在于用双引号定义字符串时,里面如果包含双引号字符,那么就要用\"来转义;单引号定义字符串时需要用到单引号本身那么就需要用\'来转义。
另外还有一个用于表示变量符号的 ` 引号,用该符号可以定义各种各样的变量名称,例如:
`?.a` <- c(1,2,3)
`hi+` <- function(x,y) { x+y }
`hi+`(1,2)
使得各种变量名称都能定义,提高了语言的容忍度。
R随机产生一个1-9的数:
    
sample( seq (1,9,by=1), 1 , replace=TRUE )
SWEEP函数:
sweep( x, Margin, Stats, FUN=“-“, )
x: 数据矩阵
Margin: 运算的区域,1=行,2=列
Stats: 统计量
FUN: 函数的运算,默认为减法运算
center<- sweep( x, 2, apply(x,2,mean), “-“ )
对数据矩阵按列,每个数减去统计量apply(x,2,mean) 即减去各列的均值。
按某一列排序:
A[order(A[,4],decreasing=T),] #按照第4列降序排序
R转置:t(A)
增加删除行列:
函数rbind()(代表row bind,按行组合)和函数cbind()(代表column bind,按列组合)可以给矩阵增加行或列。
删除行列:
例如dat是你数据集的名字,vname是你要删除的变量名,那么可以使用dat$vname<-NULL删除该变量
如果是删除第i行,就直接使用dat[-i,]
保存历史记录:
history("d:/file_name.Rhistory")
Save history

转载于:https://www.cnblogs.com/jwg-fendi/p/10052843.html

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 162202241@qq.com 举报,一经查实,本站将立刻删除。

最新评论

欢迎您发表评论:

请登录之后再进行评论

登录