读书笔记之 数据框操作与常用函数
来源:互联网 发布:根域名中国镜像服务器 编辑:程序博客网 时间:2024/06/08 05:47
如何把列表转化为整齐的矩阵?
mylist<-as.list(iris[,1:4])result<-sapply(mylist,mean)result<-lapply(mylist,mean)#结果【1】Sepal.Length Sepal.Width Petal.Length Petal.Width 5.843333 3.057333 3.758000 1.199333 【2】 $Sepal.Length[1] 5.843333$Sepal.Width[1] 3.057333$Petal.Length[1] 3.758$Petal.Width[1] 1.199333
由上可以发现两个的输出类型是不一样的。【1】是向量,【2】是list.
将list转化为matrix的操作:
#第一种是先转成数据框,再转置t(as.data.frame(result))class(A)[1] "matrix"#第二种是使用取子集的二元操作符作为sapply的参数t(sapply(result,'['))#将result传入rbinddo.call('rbind',result)class(C)[1] "matrix"
常用的函数:
1.tapply()用法:
tapply(X, INDEX, FUN = NULL, ..., default = NA, simplify = TRUE)#INDEX 为因子(分类变量)
例:
tapply(X=iris$Sepal.Length,INDEX=list(iris$Species),FUN=mean)#结果setosa versicolor virginica 5.006 5.936 6.588
2.类似的函aggregate()
aggregate(x, by, FUN, ..., simplify = TRUE, drop = TRUE)#x为数据框
例子用这两个函数简写就是:
with(iris,tapply(Sepal.Length,list(Species),mean))with(iris,aggregate(Sepal.Length,by=list(Species),mean))#仅输出数据结构不一样,aggregate更加友好,为数据框
3.mapply()函数
mapply(FUN, ..., MoreArgs = NULL, SIMPLIFY = TRUE,USE.NAMES = TRUE)#两个参数都要变化,可以用它
例:
mapply(rep, 1:4, 4:1)[[1]][1] 1 1 1 1[[2]][1] 2 2 2[[3]][1] 3 3[[4]][1] 4
4.outer()函数,类似矩阵计算中的外积,直接对两个数相乘
outer(X, Y, FUN = "*", ...)*函数可以自定义例:outer(month.abb, 1999:2003, FUN = "paste") [,1] [,2] [,3] [,4] [,5] [1,] "Jan 1999" "Jan 2000" "Jan 2001" "Jan 2002" "Jan 2003" [2,] "Feb 1999" "Feb 2000" "Feb 2001" "Feb 2002" "Feb 2003" [3,] "Mar 1999" "Mar 2000" "Mar 2001" "Mar 2002" "Mar 2003" [4,] "Apr 1999" "Apr 2000" "Apr 2001" "Apr 2002" "Apr 2003" [5,] "May 1999" "May 2000" "May 2001" "May 2002" "May 2003" [6,] "Jun 1999" "Jun 2000" "Jun 2001" "Jun 2002" "Jun 2003" [7,] "Jul 1999" "Jul 2000" "Jul 2001" "Jul 2002" "Jul 2003" [8,] "Aug 1999" "Aug 2000" "Aug 2001" "Aug 2002" "Aug 2003" [9,] "Sep 1999" "Sep 2000" "Sep 2001" "Sep 2002" "Sep 2003"[10,] "Oct 1999" "Oct 2000" "Oct 2001" "Oct 2002" "Oct 2003"[11,] "Nov 1999" "Nov 2000" "Nov 2001" "Nov 2002" "Nov 2003"[12,] "Dec 1999" "Dec 2000" "Dec 2001" "Dec 2002" "Dec 2003"#例如用其生成九九乘法表f<-function(x,y){ left<-paste0(x,"*",y,"=") right<-x*y re<-paste0(left,right) return(re)}vec1<-vec2<-vecouter(vec1,vec2,FUN=f)#结果 [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [1,] "1*1=1" "1*2=2" "1*3=3" "1*4=4" "1*5=5" "1*6=6" "1*7=7" "1*8=8" "1*9=9" [2,] "2*1=2" "2*2=4" "2*3=6" "2*4=8" "2*5=10" "2*6=12" "2*7=14" "2*8=16" "2*9=18" [3,] "3*1=3" "3*2=6" "3*3=9" "3*4=12" "3*5=15" "3*6=18" "3*7=21" "3*8=24" "3*9=27" [4,] "4*1=4" "4*2=8" "4*3=12" "4*4=16" "4*5=20" "4*6=24" "4*7=28" "4*8=32" "4*9=36" [5,] "5*1=5" "5*2=10" "5*3=15" "5*4=20" "5*5=25" "5*6=30" "5*7=35" "5*8=40" "5*9=45" [6,] "6*1=6" "6*2=12" "6*3=18" "6*4=24" "6*5=30" "6*6=36" "6*7=42" "6*8=48" "6*9=54" [7,] "7*1=7" "7*2=14" "7*3=21" "7*4=28" "7*5=35" "7*6=42" "7*7=49" "7*8=56" "7*9=63" [8,] "8*1=8" "8*2=16" "8*3=24" "8*4=32" "8*5=40" "8*6=48" "8*7=56" "8*8=64" "8*9=72" [9,] "9*1=9" "9*2=18" "9*3=27" "9*4=36" "9*5=45" "9*6=54" "9*7=63" "9*8=72" "9*9=81"
outer()在3d作图中的应用。
f<-function(x,y,z) x^2-10*cos(2*pi*x)+y^2+10*cos(2*pi*y)+20x<-y<-seq(-5,5,0.01)z<-outer(x,y,f)image(x,y,z)Z<-rank(z)library(rgl)bg3d("slategray")#设置背景色persp3d(x,y,z,col=rainbow(as.integer(max(Z)))[Z])play3d(spin3d())
阅读全文
0 0
- 读书笔记之 数据框操作与常用函数
- C++编程规范之函数与操作符(读书笔记)
- 常用的数据操作函数
- C语言操作mysql数据 常用函数
- C语言操作mysql数据 常用函数
- byte数据的常用操作函数
- Oracle常用的数据操作函数
- Oracle常用的数据操作函数
- JQuery之DOM操作及常用函数
- JQuery之DOM操作及常用函数
- Spark常用函数讲解之Action操作
- Spark常用函数讲解之Action操作
- Spark常用函数之Action操作
- POI实战-java开发excel详解之常用操作-单元格合并与数据读取
- JDBC中常用的SQL总结01之与表中的数据有关的基本操作
- 数据储存之SQLite常用函数
- PHP数组常用操作与常用排序函数
- PHP之大数据加减乘除操作函数
- Web前端开发笔试面试题
- Eclipse导入项目报错Target runtime com.genuitec.runtime.generic.jee70 is not defined.
- MySQL 索引基础 (一)
- Qt中关于XML的读写应用
- codeforces 746A Compote
- 读书笔记之 数据框操作与常用函数
- 如何修改element.style内联样式;
- git命令大全(基本涵盖所有功能)
- MySQL数据库的基础知识
- 洞见 | 百度开放了自动驾驶技术平台,然后呢?
- CodeForces 230 A. Dragons
- 详解Serverless服务,它会颠覆你对云的理解 | 硬创公开课
- 重入锁
- AI AR与百度生态加持 百度地图推出人工智能新版本