y <- matrix(DATA,nrow = n1,ncol = n2,byrow = TRUE(default:false),dimnames = list(string_row,string_col)
out:
B1 B2 B3 B4
A1 1 2 3 4
A2 5 6 7 8
A3 9 10 11 12
A4 13 14 15 16
A5 17 18 19 20
-----------------------------------------------------------------------------
# 索引 y[row,col]
>y[1,] # 第一行
B1 B2 B3 B4
1 2 3 4
>y[,1] # 第一列
A1 A2 A3 A4 A5
1 5 9 13 17
>y[c(1:3),] # 1至3行
>y[c(1,3),] # 第1行,第3行
z <- matrix(1:20,c(4,5),dimnames = list(dim1,dim2,dim3))
### data <- data.frame(col1,col2,col3....)
patientID <- c(1:4)
age <- c(17,26,29,22)
diabetes <- c("type1","type2","type2","type1")
status <- c("excellent","poor","excellent","improved")
patientdata <- data.frame(patientID,age,diabetes,status)
out:
patientID age diabetes status
1 1 17 type1 excellent
2 2 26 type2 poor
3 3 29 type2 excellent
4 4 22 type1 improved
-----------------------------------------------------------------------
## 选取数据
patientdata[1,] # 选取第一行
patientdata$patientID # 选取特定数据
-----
## attach()、detach()和with()简化代码
# attach()后记得detach()
> attach(patientdata)
The following objects are masked _by_ .GlobalEnv:
age, diabetes, patientID, status
> age
[1] 17 26 29 22
> diabetes
[1] "type1" "type2" "type2" "type1"
> detach(patientdata)
---------------------------
# with() 即用即丢
> with(patientdata,{print(summary(age))
+ plot(patientID,age)
+ })
Min. 1st Qu. Median Mean 3rd Qu. Max.
17.00 20.75 24.00 23.50 26.75 29.00
# mylist <- list(object1,object2,object3....)
# object指的是包括向量、矩阵(matrix)、数组(array)、数据框(data.frame)在内的所有对象
> string <- "my first list"
> number <- c(1,3,5,7)
> matrix <- matrix(1:12,c(3,4))
> string2 <- c("one","two","three")
> mylist <- list(title=string,numbers=number,matrix,string2)
> mylist
$title
[1] "my first list"
$numbers
[1] 1 3 5 7
[[3]]
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
[[4]]
[1] "one" "two" "three"
-------------------------------------
# 读取数据
mylist$title
mylist[["numbers"]]
mylist[[3]]
> mydata <- data.frame(age=numeric(0),gender=character(0))
> mydata <- edit(mydata)
mycsv <- read.table("rtest.csv",sep=',',header = TRUE)
""
seq: 分隔符
header: 文件是否含有标头,默认False
""
mycsv <- str(csv)
函数par()对基本图形参数进行调整和修改
opar <- par(no.readonly = TRUE)
par(option1=value,opetion2=value,option3=value....)
ploy(x,y,,type="value")
par(opar) # 还原环境
""
value:
- "p" 散点图
- "l" 实线图
- "b" 点and实线
- "o" 点and实线(穿过点)
- "h" 点到x轴的竖线
- "s" 阶梯形曲线
- "S" 同上
- "n" 不画
""
plot(x,y,type="value",pch="value",lty="value",cex="value",lwd="value")
""
pch 点符号样式 point character
lty 线条样式 line type
cex 点符号缩放倍数
lwd 线宽倍数 line width
""
# 颜色
col default; col=c("red", "blue")循环颜色
col.axis 坐标轴刻度文字的颜色
col.lab 坐标轴标签(名称)的颜色
col.main 标题颜色
col.sub 副标题颜色
fg 图形的前景色
bg 图形的背景色
# 文本大小
cex 缩放倍数的数值
cex.axis 坐标轴刻度文字的缩放倍数
cex.lab 坐标轴标签的缩放倍数
cex.main 标题的缩放倍数
cex.sub 副标题的缩放倍数
# 字体样式
font 1=常规,2=粗体,3=斜体,4=粗斜体,5=符号字体
font.axis 坐标轴刻度文字样式
font.lab 坐标轴标签样式
font.main 标题样式
font.sub 副标题样式
ps 字体磅值
family 字体族
par(pin=c(w,h),mai=c(5,4,4,2))
""
pin 以英寸表示的图形尺寸(宽和高)
mai 边界大小,顺序为“下、左、上、右”,单位为英寸
mar 同上,单位为英分
""
# title() 用于**添加**标题或坐标轴标签,需去除默认标题(ann=false)
title(main="char",col.main="red",
sub="char",col.sub="pink",
xlab="char",ylab="char",
col.lab="green",cex.lab=0.75)
# axis() 用于**添加**标题或坐标轴标签,需去除默认标题(axes=false)
side=int 绘制坐标轴,1=下;2=左;3=上;4=右
at=数值 绘制刻度线的位置(需要指定边side=)
labels=char 刻度线的文字标签(需要指定side、at)
pos 坐标轴绘制位置
lty
col
las 标签是否平行于(=0),或垂直于(=2)坐标轴
# legend()
legend(location,title="char",c("legend_name1","legend_name2"...),
pch=c(int1,int2...),lty=c(int1,int2...),col=c("char1","char2"...)
#abline()
abline(h=yvalues,v=xvalues,lty=int,col="char")
# text()
text(location,"text to place",pos,col,font,cex)
""
location : x轴,y轴值
"text to place" : 文本内容
pos:文本在点的方向 1=下,2=左,3=上,4=右
""
# par()
opar <- par(no.readonly=TRUE)
par(mfrow=c(2,2)) # 上下两行各两幅图 mfrow(3,1) 从上之下三行图
plot()
plot()
hist() # 柱形图
boxplot # 箱线图
par(opar)
# layout()
layout(matrix(c(1,1,2,3)),2,2,byrow=TRUE) # 第一行一幅图,第二行两幅图
""
精细调整
widths=c(int1,int2) # 水平图形宽比为 int1:int2
heights=c(int1,int2) # 垂直图形高比为 int1:int2
""
# 创建
mydata <- data.frame(col1=,col2=...)
# 修改变量值
mydata$col1 <- c("","",""...)
# 修改变量名
names(mtdata)[3] <- "newname" # names() 修改指定列变量名
library(plyr) # plyr包
patientdata <- rename(patientdata,c(col1="newname"))
# 添加
patientdata$new_variate <- NA
# 条件判断赋予值
mydata$new_variate[col1 <= int] <- "value"
mydata <- within(mydata,{
new_variate <- NA
new_variate[col1 <= int] <- "value1"
new_variate[col1 == ""] <- "value2"
......
})
# 数据排序
newdata <- mydata[order(mydata$col1),] # order()函数 默认升序
# 先按col1升序排序,再按col2降序排序
newdata <- mydata[order(mydata$col1,-mydata$col2),]
# 合并列 merge()
total <- merge(mydata1,mydata2,by = "ID")
# 合并行 rbind() 纵向合并
total <- merge(mydata1,mydata2)
# 取子集或删除变量
mydata2 <- mydata1[c(1,3),c(2,4)] # 取第1,3行,第2,4列
mydata$del <- NULL
(条件){statement}
# for结构
for (var in seq) statement
"如 for (i in 1:10) print("hello")"
# while结构
while (cond) statement
""如
i = 10
while (i>0) {print("hello");i = i - 1}
""
# if-else结构
if (cond) statement
if (cond) statement1 else statement2
"如 if (is.character(grade) x= as.factor(grade))"
"if (is.character(grade) x= as.factor(grade) else print("Grade is a factor")"
#ifelse结构
ifelse(cond,statement1,statement2)
# switch结构
myfunction = function(arg1,arg2,...) {
statement
return(object)
}
t(frame)
aggregate(x,by=list(),FUN)
"x待整合的数据对象 by数据集变量名组成的列表 , FUN=统计函数(如mean、sum)"
# 融合 melt()
md = melt(mydata,id=c("ID","Time")) # ID\Time列为测量变量名,融合其他数据
# 重铸 dcast()
dcast(md,formula,fun.aggregate) # fun.aggregate可选(整合与不整合)