Basic R (1)

  blogger还是打不开,goagent也有童鞋遇到同样的问题,还是觉得blogger的页面看起来比较舒适。

  总结一些R的基本操作,好久没用R,很多函数又忘掉了。总是不记得R的indexing是从1开始的,这一点在所有编程语言里面是最特别的。

 

  首先是format方面的问题,比如将0,1,23,345变成“000”,“001”,“023”,“345”的格式,可以使用formatC函数:

  id = as.character(formatC(id, flag=0, width=3))
  paste0(id,".csv") #连接两个字符串中间不加空格

  在函数体中将结果输出到console,使用print()函数;return()要将结果放在括号中;如果不使用return语句,那么默认返回最后一个语句

  completeCases <- data.frame(id,0) #id是一个vector,直接创建一个data.frame,第二列默认全部为0
  colnames(completeCases) <- c("id","nobs") #changing the names of data.frame

  记得在 The Art of R Programming 中有关于赋值和重新改变size的讨论,好像是先分配固定大小的存储空间,再赋值比较有效率一些。data.frame的列名好像没法在创建的时候就设置,只有as.data.frame可以。

  complete.cases()函数,这个函数返回的是逻辑值

  complete.cases(data)

  data <- data[complete.cases(data), ] #筛选无缺失值的数据

  sum(complete.cases(data)) #获得完整记录的行数

  files<-(Sys.glob("*")) #列举当前目录所有文件名称

  files<-(Sys.glob("*.csv")) #列举当前目录所有以.csv为扩展名的文件名称 

  correlations <- vector() #初始化null向量

  correlations<-append(correlations,cor(data$sulfate, data$nitrate)) #在向量后添加元素
  apply, lapply, sapply, tapply 函数
  tapply(mtcars$hp, mtcars$cyl, mean) #根据cyl分组,确定每一组的hp平均值

  sapply(split(mtcars$mpg, mtcars$cyl), mean) #或者使用sapply, split函数将mpg按照cyl分组

  apply(iris[, 1:4], 2, mean) #1-4列的平均值

  colMeans(iris) #如果全部是numeric value
posted @ 2013-10-07 20:01  Defightender  阅读(281)  评论(0编辑  收藏  举报