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