照著星球的代碼跑了下
with的使用要注意
rm(list=ls())
a <- data.frame(case=paste0("S",1:9),value=runif(9))
plot(a$case,a$value)
#偷懶方法1
attach(a)
plot(case,value)
#方法2,構(gòu)建局域變量
#必須分行
with(a,{
plot(case,value)
x<<- summary(value)
})
x
#變量的保存
save(a,file="test.Rdata")
load("test.Rdata")
數(shù)據(jù)結(jié)構(gòu)
R語言編程藝術(shù)學(xué)習(xí)記錄
第一章
繪圖pdf
pdf("a.pdf")
hist(rnorm(10))
dev.off
思考,如何返回所有奇數(shù)
oddcount <- function(x){
k = 0
for(n in x){
if (n%%2 == 1) k=k+1
}
return(k)
}
oddcount(c(1,2,3,4,5))
理解畫圖
hn=hist(Nile)
str(hn)
example() #實(shí)例函數(shù)使用
example(persp) #驚艷
?mean
help(package=ggplot2)
第二章
可以用seq創(chuàng)建向量
seq(from=1.1,to=2,by=0.1)
rep
rep(c(1,2),2)
rep(c("nomal","tumor"),each=3)
findruns實(shí)戰(zhàn)
findruns <- function(x,k){
n=length(x)
runs = NULL
for(i in 1:(n-k+1)){
if(all(x[i:(i+k-1)]==1)) runs<-c(runs,i)
}
return(runs)
}
y<-c(1,0,1,1,0,0,1,1,1,1,0,0,1)
findruns(y,3)
移除缺失值
na.rm=T
選擇函數(shù)
subset(x,x>5)
which(x>5)
判斷
y <- ifese(x%%2 ==0,8,9) #是8非9
第三章 矩陣
尋找共同上升
finddud <- function(v){
vud=v[-1]-v[-length(v)] #vud=diff(v)
return(ifelse(vud>0,1,-1))
}
udcorr <-function(x,y){
ud <- lapply(list(x,y),finddud)
return(mean(ud[[1]]==ud[[2]]))
}
x=c(12,13,14,48,45,78,79)
y=c(85,87,98,51,54,24,65)
udcorr(x,y)
apply允許用戶在各行或各列調(diào)用指定的函數(shù)
apply(z,2,mean)
前d各1/0誰多返回誰
copymj<-function(z,d){
k=sum(z[1:d])/d
return(ifelse(k>0.5,1,0))
}
x=matrix(c(1,1,1,0,0,1,0,1,1,1,0,1),nrow = 4,ncol = 3)
apply(x,1,copymj,3)
矩陣是數(shù)組的一個(gè)特殊形式
第四章 list
lappy是apply在list上的進(jìn)階版本
第五章 數(shù)據(jù)框
可以理解成矩陣內(nèi)有字符了,多種元素模式
合并
merge(a,b,by.x='',by.y='')
第六章 因子和表
tapply
age=c(12,15,14,13)
type=c("A","B","A","D")
tapply(age,type,mean)
split分割,返回的是列表
split(1:7,g) #按g分割