完美者(wmzhe.com)网站以软件下载为基础,改版后的网站对功能性板块进行扩充,以期能够解决用户在软件使用过程中遇见的所有问题。网站新增了“软件百科”、“锦囊妙技”等频道,可以更好地对用户的软件使用全周期进行更加专业地服务。
File Describer一款辅助小工具,可以列出指定目录下所有文件,根据需求进行添加文件描述。描述文件存放在指定目录下的.desc文件中。"锦囊妙技"栏目是聚合全网软件使用的技巧或者软件使用过程中各种问题的解答类文章,栏目设立伊始,小编欢迎各路软件大神朋友们踊跃投稿,在完美者平台分享大家的独门技巧。
本站文章素材来源于网络,大部分文章作者名称佚失,为了更利于用户阅读和使用,根据需要进行了重新排版和部分改编,本站收录文章只是以帮助用户解决实际问题为目的,如有版权问题请联系小编修改或删除,谢谢合作。
软件大小:85.92 KB
"您好,很高兴为您解答!
“参考网址1”中提到如果只是对整数运算(运算过程和结果都只使用整数),没有必要使用“double”(8 byte),而应该用更小的“integer”(4 byte)。使用storage.mode(x)查看对象存数的模式,storage.mode(x) <- 进行赋值;使用format(object.size(a), units = 'auto')查看对象占用的内存空间(此处有疑问,即在R中每个integer到底占用了多大的空间?)。需要解释gc()函数,可以查看内存使用情况。同样,在清除了大的对象之后,使用gc()以释放内存使用空间。李航在”参考网址2“中提到,对于大矩阵的操作,尽量避免使用cbind和rbind之类,因为这会让内存不停地分配空间。“对于长度增加的矩阵,尽量先定义一个大矩阵,然后逐步增加”和“注意清除中间对象”。使用bigmemory家族:bigmemory, biganalytics, synchronicity, bigtabulate and bigalgebra, 同时还有biglm。bigmemory package的使用:1. 建立big.memory对象bigmemory采用C++的数据格式来“模仿”R中的matrix。编写大数据格式文件时候,可以先建立filebacked.big.matrixbig.matrix(nrow, ncol, type = options()$bigmemory.default.type, init = NULL, dimnames = NULL, separated = FALSE, backingfile = NULL, backingpath = NULL, descriptorfile = NULL, shared = TRUE)filebacked.big.matrix(nrow, ncol, type = options()$bigmemory.default.type, init = NULL, dimnames = NULL, separated = FALSE, backingfile = NULL, backingpath = NULL, descriptorfile = NULL)as.big.matrix(x, type = NULL, separated = FALSE, backingfile = NULL, backingpath = NULL, descriptorfile = NULL, shared=TRUE)使用注意:big.matrix采用两种方式储存数据:一种是big.matrix默认的方式,如果内存空间比较大,可以尝试使用;另外一种是filebacked.big.matrix,这种储存方法可能会备份文件(file-backings),而且需要descriptor file;“init”指矩阵的初始化数值,如果设定,会事先将设定的数值填充到矩阵中;如果不设置,将处理为NA"type"是指在big.matrix中atomic element的储存格式,默认是“double”(8 byte),可以改为“integer”(4 byte), "short"(2 byte) or "char"(1 byte)。注意:这个包不支持字符串的储存,type = "char"是指ASCII码字母。在big.matrix非常大的时候,避免使用rownames和colnames(并且bigmemory禁止用名称访问元素),因为这种做法非常占用内存。如果一定要改变,使用options(bigmemory.allow.dimnames=TRUE),之后colnames, rownames设置。直接在命令提示符后输入x(x是一个big matrix),将返回x的描述,不会出现所有x中所有内容。因此,注意x[ , ](打印出矩阵全部内容);如果big.matrix有很多列,那么应该将其转置后储存;(不推荐)或者将参数“separated”设置为TRUE,这样就将每一列分开储存。否则,将用R的传统方式(column major的方式)储存数据。如果建立一个filebacked.big.matrix,那么需要指定backingfile的名称和路径+descriptorfile。可能多个big.matrix对象对应唯一一个descriptorfile,即如果descriptorfile改变,所以对应的big.matrix随之改变;同样,decriptorfile随着big.matrix的改变而改变;如果想维持一种改变,需要重新建立一个filebacked.big.matrix。attach.big.matrix(descriptorfile or describe(big.matrix))函数用于将一个descriptorfile赋值给一个big.matrix。这个函数很好用,因为每次在创建一个filebacked.big.matrix后,保存R并退出后,先前创建的矩阵会消失,需要再attach.big.matrix以下2. 对big.matrix的列的特定元素进行条件筛选对内存没有限制;而且比传统的which更加灵活(赞!)mwhich(x, cols, vals, comps, op = 'AND')x既可以是big.matrix,也可以是传统的R对象;cols:行数vals:cutoff,可以设定两个比如c(1, 2)comps:'eq'(==), 'neq'(!=), 'le'(<), 'lt'(<=), 'ge'(>) and 'gt'(>=)op:“AND”或者是“OR”可以直接比较NA,Inf和-Inf3.bigmemory中其他函数nrow, ncol, dim, dimnames, tail, head, typeof继承base包big.matrix, is.big.matrix, as.big.matrix, attach.big.matrix, describe, read.big.matrix, write.big.matrix, sub.big.matrix, is.sub.big.matrix为特有的big.matrix文件操作;filebacked.big.matrix, is.filebacked(判断big.matrix是否硬盘备份) , flush(将filebacked的文件刷新到硬盘备份上)是filebacked的big.matrix的操作。mwhich增强base包中的which, morder增强order,mpermute(对matrix中的一列按照特定序列操作,但是会改变原来对象,这是为了避免内存溢出)big.matrix对象的copy使用deepcopy(x, cols = NULL, rows = NULL, y = NULL, type = NULL, separated = NULL, backingfile = NULL, backingpath = NULL, descriptorfile = NULL, shared=TRUE)biganalytics package的使用biganalytics主要是一些base基本函数的扩展,主要有max, min, prod, sum, range, colmin, colmax, colsum, colprod, colmean, colsd, colvar, summary, apply(只能用于行或者列,不能用行列同时用)等比较有特色的是bigkmeans的聚类剩下的biglm.big.matrix和bigglm.big.matrix可以参考Lumley's biglm package。bigtabulate package的使用并行计算限制的突破:使用doMC家族:doMC, doSNOW, doMPI, doRedis, doSMP和foreach packages.foreach package的使用foreach(..., .combine, .init, .final=NULL, .inorder=TRUE, .multicombine=FALSE, .maxcombine=if (.multicombine) 100 else 2, .errorhandling=c('stop', 'remove', 'pass'), .packages=NULL, .export=NULL, .noexport=NULL, .verbose=FALSE)foreach的特点是可以进行并行运算,如在NetWorkSpace和snow?%do%严格按照顺序执行任务(所以,也就非并行计算),%dopar%并行执行任务...:指定循环的次数;.combine:运算之后结果的显示方式,default是list,“c”返回vector, cbind和rbind返回矩阵,"+"和"*"可以返回rbind之后的“+”或者“*”.init:.combine函数的第一个变量.final:返回最后结果.inorder:TRUE则返回和原始输入相同顺序的结果(对结果的顺序要求严格的时候),FALSE返回没有顺序的结果(可以提高运算效率)。这个参数适合于设定对结果顺序没有需求的情况。.muticombine:设定.combine函数的传递参数,default是FALSE表示其参数是2,TRUE可以设定多个参数.maxcombine:设定.combine的最大参数.errorhandling:如果循环中出现错误,对错误的处理方法.packages:指定在%dopar%运算过程中依赖的package(%do%会忽略这个选项)。getDoParWorkers( ) :查看注册了多少个核,配合doMC package中的registerDoMC( )使用getDoParRegistered( ) :查看doPar是否注册;如果没有注册返回FALSEgetDoParName( ) :查看已经注册的doPar的名字getDoParVersion( ):查看已经注册的doPar的version===================================================# foreach的循环次数可以指定多个变量,但是只用其中最少?的> foreach(a = 1:10, b = rep(10, 3)) %do% (a*b)[[1]][1] 10[[2]][1] 20[[3]][1] 30# foreach中.combine的“+”或者“*”是cbind之后的操作;这也就是说"expression"返回一个向量,会对向量+或者*> foreach(i = 1:4, .combine = "+") %do% 2[1] 8> foreach(i = 1:4, .combine = "rbind") %do% rep(2, 5)[,1] [,2] [,3] [,4] [,5]result.1 2 2 2 2 2result.2 2 2 2 2 2result.3 2 2 2 2 2result.4 2 2 2 2 2> foreach(i = 1:4, .combine = "+") %do% rep(2, 5)[1] 8 8 8 8 8> foreach(i = 1:4, .combine = "*") %do% rep(2, 5)[1] 16 16 16 16 16=============================================iterators package的使用iterators是为了给foreach提供循环变量,每次定义一个iterator,它都内定了“循环次数”和“每次循环返回的值”,因此非常适合结合foreach的使用。iter(obj, ...):可以接受iter, vector, matrix, data.frame, function。nextElem(obj, ...):接受iter对象,显示对象数值。以matrix为例,iter(obj, by=c('column', 'cell', 'row'), chunksize=1L, checkFunc=function(...) TRUE, recycle=FALSE, ...)by:按照什么顺序循环;matrix和data.frame都默认是“row”,“cell”是按列依次输出(所以对于“cell”,chunksize只能指定为默认值,即1)chunksize:每次执行函数nextElem后,按照by的设定返回结果的长度。如果返回结构不够,将取剩余的全部。checkFunc=function(...) TRUE:执行函数checkFun,如果返回TRUE,则返回;否则,跳过。recycle:设定在nextElem循环到底(“错误: StopIteration”)是否要循环处理,即从头再来一遍。以function为例iter(function()rnorm(1)),使用nextElem可以无限重复;但是iter(rnorm(1)),只能来一下。更有意思的是对象如果是iter,即test1 <- iter(obj); test2 <- iter(test1),那么这两个对象是连在一起的,同时变化。==============================================> a[,1] [,2] [,3] [,4] [,5][1,] 1 5 9 13 17[2,] 2 6 10 14 18[3,] 3 7 11 15 19[4,] 4 8 12 16 20> i2 <- iter(a, by = "row", chunksize=3)> nextElem(i2)[,1] [,2] [,3] [,4] [,5][1,] 1 5 9 13 17[2,] 2 6 10 14 18[3,] 3 7 11 15 19> nextElem(i2) #第二次iterate之后,只剩下1行,全部返回[,1] [,2] [,3] [,4] [,5][1,] 4 8 12 16 20> i2 <- iter(a, by = "column", checkFunc=function(x) sum(x) > 50)> nextElem(i2)[,1][1,] 13[2,] 14[3,] 15[4,] 16> nextElem(i2)[,1][1,] 17[2,] 18[3,] 19[4,] 20> nextElem(i2)错误: StopIteration> colSums(a)[1] 10 26 42 58 74> testFun <- function(x){return(x+2)}> i2 <- iter(function()testFun(1))> nextElem(i2)[1] 3> nextElem(i2)[1] 3> nextElem(i2)[1] 3> i2 <- iter(testFun(1))> nextElem(i2)[1] 3> nextElem(i2)错误: StopIteration> i2 <- iter(testFun(1))> i3 <- iter(i2)> nextElem(i3)[1] 3> nextElem(i2)错误: StopIteration============================================iterators package中包括irnorm(..., count);irunif(..., count);irbinom(..., count);irnbinom(..., count);irpois(..., count)中内部生成iterator的工具,分别表示从normal,uniform,binomial,negativity binomial和Poisson分布中随机选取N个元素,进行count次。其中,negative binomial分布:其概率积累函数(probability mass function)为掷骰子,每次骰子为3点的概率为p,在第r+k次恰好出现r次的概率。icount(count)可以生成1:conunt的iterator;如果count不指定,将从无休止生成1:Inficountn(vn)比较好玩,vn是指一个数值向量(如果是小数,则向后一个数取整,比如2.3 --> 3)。循环次数为prod(vn),每次返回的向量中每个元素都从1开始,不超过设定 vn,变化速率从左向右依次递增。idiv(n, ..., chunks, chunkSize)返回截取从1:n的片段长度,“chunks”和“chunkSize”不能同时指定,“chunks”为分多少片段(长度从大到小),“chunkSize”为分段的最大长度(长度由大到小)iapply(X, MARGIN):与apply很像,MARGIN中1是row,2是columnisplit(x, f, drop=FALSE, ...):按照指定的f划分矩阵=============================================> i2 <- icountn(c(3.4, 1.2))> nextElem(i2)[1] 1 1> nextElem(i2)[1] 2 1> nextElem(i2)[1] 3 1> nextElem(i2)[1] 4 1> nextElem(i2)[1] 1 2> nextElem(i2)[1] 2 2> nextElem(i2)[1] 3 2> nextElem(i2)[1] 4 2> nextElem(i2)错误: StopIteration
一、 排在一切的开始help/search1. help 当你知道一个命令想了解它的具体用法和含义时help command-name2. search 当你不知道该用什么命令可以输入你关心的词查找到需要的命令这两个都使用菜单操作更加方便在最右边help 菜单下3. log using 创建日志文件就是把你输入的命令得出的结果等在stata results窗口里显示过的东西都存成一个.smc 文件可供以后察看二、 数据库操作从其他格式的数据库文件开始1. 使用statatransfer 转化成stata 格式2. 如果是Exce 格式可全选复制打开stata 粘贴到空白的数据编辑窗口里面去3. stata 命令insheet(读用tab 或逗号分隔的文本)/odbc/infile1(读tab 或space 或逗号分开的文本)/infix/infile2 等从stata 格式的文件开始1. 打开保存open/ save,可以进行菜单操作当数据库非常大时可能会需要setmemory …* 已经打开数据库的情况下该命令可能不被允许使用Save 命令的重要选项是replace.就是把同名文件替换掉这里有时候需要小心一些否则的话可能会带来不期望的结果2. 描述describe/codebook/inspect/summarize/tab/table/display/listdescribe 提供变量名变量类型变量标签(label)codebook 变量名标签非缺生值个数其他统计量type, range, mean, sd, percentile等inspect 变量名标签该变量数值的结构几个不同值几个正值负值0 值tabulate 制表有丰富功能table:制表仅显示离散变量各值的出现频率summarize 报告均值标准差极值list: 列举不加任何参数列举所有变量的所有观察值display 显示后面加的表达式**想把stata 当计算器用的话可以在di 后面输入你要计算的式子回车这个式子里可以有数字定义过的scalar 某个变量的某个观察值如I[23]指的是变量I 的第23 个观察值*label: 给变量或者变量的值贴标签3. 变量/观察处理generate/replace/drop/keep/egengenerate: 生成一个变量你需要给它赋值可以用常数缺省. existing 变量的代数式函数注意用函数赋值如gen sumi=sum(i), sumi 的所有观察值都是一样的等于所有I 的加总replace: 给已有变量赋值结构同gendrop/keep: 删掉指定变量/除指定变量以外的所有变量egen 比较智能的变量生成器用于分组加总计数平均等要求数据库sorted by the group.*从离散变量生成dummies: tab var gen var(var).如果变量var 有3 个不同值就相应生成了3 个dummies 分别命名为var1 var2 var3.4. 数据库处理keep /drop/merge/append/sortkeep/drop 跟if 条件满足/不满足条件的观察删掉merge 横向合并数据库当两个数据库描述的大体是同一些个体的不同方面的特征合并起来一描述这些个体的所有特征时使用注意简单一对一合并(merge using “.dta”)区别于按索引合并merge 索引变量 using “.dta”, 这时主客数据库均应按索引变量排序,注意update/update replace 选项append: 追加观察sort 排序gsort 智能排序5. scalar 和matrix 不编程的话用的不多即使用到也是很简单的help 一看就明白6. function: help function 去找你想用的函数有Mathematica functions Probability distributions & density functions Random numbersString functions Programming functions Date functions Time-series functionsMatrix functions 等三、 估计针对pane datapane data 的处理需要先制定组代码和时间代码iis …/tis …1. OLS: reg depenvar covariates, 选项Predict: 计算残差hat/yhat变量的系数scalar 存储为_b[变量名]可以加weight 相当于GLS 处理异方差2. GLS: pane data 中xtgls 缺省仅假定var( ) var( ) it is u ≠ u ift≠s 即个时期之间存在异方差个体之间方差相同个体之间相互独立时间序列上没有自相关但是通过选项panel(),corr()使协方差矩阵更加复杂当然要求程序运行的时间加长运行gls 需要较大型的矩阵运算所以有时候需要set matsize ….后面的数字最大为8003. random effect fixed effect: xtreg …., re/ferandom effect 作为一种GLS 和xtgls 的不同之处在于对残差的假定不同Randomeffect 里面没有任何形式的异方差但是同一个pane 内部有相关性而这个相关性与时间没有关系是individua effect 引起的所以不是时间序列意义上的马尔可夫过程4. test:Hausman specification test: “help hausman” 有详细步骤描述5. 报告结果的两个trick把结果做成表格选定表格注意是表格不能包括回归结果上面的RSS,F, R-square什么的表头右键copy table 贴到exce 里面就是完美的表格了 把几个回归的结果合并在一起报告一个数列的表step1: 先做一个回归跟上est store 回归名1step2: 做另一个回归跟上est store 回归名2StepN+1. est table 回归名1 回归名2 回归名N, se就会出来一个合并起来的表格加se 选项同时还报告每一个回归系数的标准差如果把se 换成star 则自动在估计系数右上加上表示显著性水平的*号四、 do file 的写作我的经验不多主要是从MR HE 那里听来看来的1. 注释两种以*开始一句话该句话被认为是注释命令后面/* */中间的东西被认为是注释当然后面的也是不算命令的可以在单命令里使用/* */只能在do files 里使用2. 循环条件语句forvalues/if/…具体用法看帮助**forvalues 里面引用循环指标(say, a)的时候需要这么写`a’, 注意前后两个引号是不一样的如果不是laborhood 教导我恐怕这辈子也想不出来 五、 画图画图时非常重要的内容可是stata8 用菜单/对话框的方式实现了就没什么难为的了虽然程序里用的时候必须输命令这个命令要实现的任务可以先用对话框实现一遍stata8自己会把完整的命令写出来不过stata8 有一点不好graph 命令必须制定画图的类型graph var graph var1 var2 这样的命令不被接受而stata7 里面这两个就分别默认为histogram var; twoway(var1,var2)了还有save graph combine graphs 的问题 就是把画好的几个图列在一个大图里显示Stata8和stata7 也不一样7 里面是graph…, saving(name1),…;graph using name1…; 8 里面是graph…,name(name1); graph combine name1…;
/**********************更正#### 直接ftp 对方ip地址 对方装的如果是windows 系统,就下载一个netterm;在对方主机上安装,这东西网上到处都是,下个共享版的就可以了,不用注册,运行NetFtpd,上面有This host IP Address is:***.***.***.***;在试试看ftp就行了.然后输入对方主机名和密码就行了.(如果密码为空,直接就可以进入了) /**********************更正#### 你用ftp命令试试看 如下:ftp 168.11.6.108后面跟你的ip地址; 你可以看看如下例子: Sparc2>ftp mail <— ftp 至中心之 mail_host Connected to mail.ncku.edu.tw. 220 mail FTP server (SunOS 4.1) ready. Name (mail:yang): anonymous <— 键入 user_name 331 Guest login ok, send ident as password. Password: <— 键入 password 230 Guest login ok, access restrictions apply. ftp> dir <— 显示远方主机之较详细之目录内容 200 PORT command successful. 200 PORT command successful. 150 ASCII data connection for /bin/ls (140.116.3.52,1509) (0 bytes). total 35 -rw-r--r-- 1 ftp daemon 245 May 24 1992 .desc -rw-r--r-- 1 root daemon 18 May 24 1992 .desc.note -rw-r--r-- 1 ftp daemon 1024 Dec 15 05:00 .desc.pag dr-xr-xr-x 2 ftp wheel 512 Sep 15 1992 bin -r-xr-x--- 1 ftp daemon 24576 May 24 1992 describe dr-xr-xr-x 2 ftp wheel 512 Nov 16 1992 etc dr-xr-xr-x 12 ftp wheel 512 May 19 07:58 pub -rw-r--r-- 1 ftp daemon 761 Apr 8 17:48 readme -rw-r--r-- 1 ftp daemon 1242 Oct 23 1992 upload.rule 226 ASCII Transfer complete. 755 bytes received in 0.16 seconds (4.7 Kbytes/s) ftp> cd pub/UNIX/utility <— 变换远方主机的目录 250 CWD command successful. ftp> dir 200 PORT command successful. 150 ASCII data connection for /bin/ls (140.116.3.52,1510) (0 bytes). total 50 dr-xr-xr-x 2 ftp wheel 512 Nov 10 1992 unzip dr-xr-xr-x 2 ftp wheel 512 Nov 10 1992 unzip -r-xr-xr-x 1 ftp daemon 48374 Dec 16 08:20 uuencode.zip dr-xr-xr-x 2 ftp daemon 512 Dec 31 01:59 viewer 226 ASCII Transfer complete. 201 bytes received in 0.055 seconds (3.6 Kbytes/s) ftp> bin <— 将以下档案传输型式设为 binary 200 Type set to I. ftp> get uuencode.zip <— 撷取档案 200 PORT command successful. 150 Binary data connection for uuencode.zip (140.116.3.52,1511) (48374 bytes). 226 Binary Transfer complete. local: uuencode.zip remote: uuencode.zip 48374 bytes received in 0.14 seconds (3.4e+02 Kbytes/s) ftp> !ls -al uuencode.zip <— 执行本地主机的命令 ls -al -rw------- 1 yang 48374 May 21 10:08 uuencode.zip ftp> quit <— 结束 ftp 221 Goodbye. Sparc2> ftp 之命令 ========== ! cr ls prompt runique $ delete macdef proxy send account debug mdelete sendport status append dir mdir put struct ascii disconnect mget pwd sunique bell form mkdir quit tenex binary get mls quote trace bye glob mode recv type case hash mput remotehelp user cd help nmap rename verbose cdup image ntrans reset ? close lcd open rmdir 以下为较常用之命令 : open [host_name] : 建立一个与远端主机之连结 close : 结束与远端主机之连结, 但不离开 ftp, 可再用 open 与其他主机连结 close : 结束与远端主机之连结, 但不离开 ftp, 可再用 open 与其他主机连结 bye 或 quit : 结束与远端主机之连结, 且离开 ftp CTRL-C : 中断 ftp get rfile [lfile] : 撷取远端主机的档案 put lfile [rfile] 或 send lfile [rfile] : 传送档案至远端主机 mget rfile [lfile] : 一次颉取多个远端主机的档案, 可用通配字元 mput lfile [rfile] : 一次传送多个档案至远端主机, 可用通配字元 pwd : 显示远端主机现在那个目录 lcd ldir : 变换本地主机之工作目录 cd rdir : 变换远端主机之工作目录 ls [rdir] : 显示远端主机之工作目录内容 dir [rdir] : 显示远端主机之工作目录较详细内容 dir [rdir] : 显示远端主机之工作目录较详细内容 ascii : 设定档案传输型式为 ascii binary : 设定档案传输型式为 binary prompt : 设定在用 mget mput 传档时, 是否要询问使用者的回应 ! lcommand : 执行本地主机的命令 (以上 lfile->local file , ldir->local directory , lcommand->local command rfile->remote file ,rdir->remote directory)