同时使用几种科学计算工具是怎样一种感受 Fork me on GitHub

同时使用几种科学计算工具是怎样一种感受

2015-09-01 23:23:00   Write By JSong

用知乎体来回答这个问题,持续整理中

先假设啥好的软件都没有,我们先来想想一个优秀的科学计算软件需要哪些东西。

  1. 编程简洁但又能进行一定的自由定制,比如写一个自己行业所需要的工具箱之类的

  2. 速度快,能适应越来越大的数据流

  3. 具有可视化功能,可以绘制丰富的图表

那应该怎么设计软件?

  1. 设计各种高级的数据类

    1). 支持字符串和数组的向量类型,在MATLAB中两者是分开来的

  2. 数据类的基本操作或者函数,初始化,索引,切片,逻辑索引,逻辑判断,赋值,

  3. 简单的数据生成,如数列,特殊矩阵等

  4. 控制流

  5. 绘图

  6. 丰富的函数库,线性代数,概率,图像处理,IO,时间序列,机器学习常用算法

  7. 外部接口,混合编程

前言

1、 一个不推荐自己编程,高度优化的面向对象的静态统计语言 2、因为其在参数使用上采用=赋值,所以通常的对象赋值则用符号 <-

数据结构

最底层的数据结构为:字符,数字,整数,逻辑,复数

第一层:向量,列表,因子 第二层(class):矩阵,数据框等 向量:同种数据格式,numeric, logical, char) demo :x<- c(1,2,3,4) x<-c('M','N') 矩阵:带size的向量 demo: dim(x)<-c(2,3)

             matrix(c(1:10),nrow=2,ncol=5)

列表:类似于元胞数组,对象的集合 demo: list(c(1:10),"M") 数据框: 行必须相同的list,统计常用的一种格式,类似于SPSS,数据库中的表 demo: data.frame(a,b,c) 因子 : factor

软件是面向对象编程的,每一个这样的向量就是一个对象,一些固有属性如下 length, names, mode(底层/一层), class, str dim head tail

字符串操作 toupper, tolower,nchar,substr,substring(取多组),paste,grep,strsplit

系统内存操作 getwd,setwd,ls,rm,list.files

数据I/O

文件读取 read.table 读取类似于表格的文件,后最不限制,支持分隔符,支持表头 read.csv,readHTMLTable,SQL(需要RMySQL) 底层的就是,scan(单元),readlines(行) 最最底层的,file,gzfile,zfile,open load: 导入R格式的数据,后缀为.Rdata

文件输出 R控制台: print, cat (好用一些,内部可重定向) cat(data,file=filename,append=T) 文件:sink:适合脚本的输出,由一对命令控制,sink(filename) ...... sink() 高级:write.csv,save

索引与查找

向量索引 用[],[1:5,] [T,F,T],支持逻辑索引 列表索引 用[[]], 类似于元胞,一个中括号返回的是子列表。两个返回的才是元素 名称索引 用\( 如data.frame里,x\)a

逻辑查找 x<-x[x>1] #记住圆括号一定是用于函数的

NA查找 is.na 这是一个函数,可以控制向量里面的NA值 但是在一些复杂的数据结构中不宜删除NA值,但其又不能用于统计,于是很多函数有这样一个参数,na.rm=TRUE

概率函数

d=密度函数 p=分布函数 q=分位数函数 r=生成随机数函数

控制流

apply:将函数应用到数据的某一个维度上 lapply/sapply: 将函数应用到列表上

机器学习

1、主成分分析

princomp(x,)

hclust(d, method = "complete", members=NULL)

2、典型相关分析

用于分析两组变量之间的相关性

cancor(x, y, xcenter = TRUE, ycenter = TRUE)

3、mlogit 多类别逻辑回归

4、e1071中的svm

消息

  • 1、更换为国内评论系统
  • 2、QTT工具箱已更新至1.0版本

访问量