搜索
查看: 487|回复: 0

[R] R语言实战 第五章 下

[复制链接]

31

主题

36

帖子

644

积分

高级会员

Rank: 4

积分
644
发表于 2018-12-25 10:44:38 | 显示全部楼层 |阅读模式
#####################
#控制流
# 重复
# for结构
[AppleScript] 纯文本查看 复制代码
for(var in seq) statement 

for (i in 1:10) print('Hello')


# while结构——循环重复执行一个语句,直到条件不为真
[AppleScript] 纯文本查看 复制代码
while (cond) statement

i <- 10 

while(i > 0) {print('Hello'); i <-  i-1}


# 条件执行
# if-else
if(cond) statement
if(cond) statement1 else statement2

#ifelse
ifelse( cond, statement1, statement2)
# 若cond为真,执行第一个statement1,否则取第二个
# 程序的行为是二元时,或希望结构的输入和输出均为向量时,可使用ifelse

#switch
# 根据一个表达式的值选择语句执行
switch(expr, ...)
# 例-
[AppleScript] 纯文本查看 复制代码
feelings <- c('sad', 'afraid')

for(i in feelings)

  print(

    switch(i,

           happy = "I'm glad you are happy",

           afraid = 'there is nothing to fear',

           sad = 'cheer up',

           angry = 'calm down now')

  )



做人还是要happy啊 人生五十载 只如沧海一粟


#### 函数示例
# 描述性统计量计算
[AppleScript] 纯文本查看 复制代码
mystats <- function(x, parametric = T, print = F) {

  if (parametric) {

    center <- mean(x); spread <- sd(x)

  } else {

    center <- median(x);spread <- mad(x)

  }

  if (print & parametric){

    cat('mean = ', center, '\n', 'sd =', spread, '\n')

  } else if (print & !parametric) {

    cat('median =', center, '\n', 'mad = ', spread, '\n')

  }

  result <- list(center = center , spread = spread)

  return(result)

}


# 根据需求自己定制函数,是个高端技能了,要求一定的编程能力,我jio着,小白阶段,能找到相应的代码即可

# 整合(aggregate)与重构(reshape)
# 转置
[AppleScript] 纯文本查看 复制代码
cars <- mtcars[1:5, 1:4]

View(cars)

tcars <- t(cars)

View(tcars)


# 整合
aggregate(x, by, FUN)
# x 待折叠的数据对象
# by 一个变量名组成的列表
# FUN 计算描述性统计量的标量函数
# 例
[AppleScript] 纯文本查看 复制代码
options(digits = 3)

attach(mtcars)

?aggregate

aggdata <- aggregate(mtcars, by = list(cyl, gear), FUN = mean, na.rm = T)

aggdata


library(reshape2)
# 融合
[AppleScript] 纯文本查看 复制代码
mydata <- data.frame(

  ID = c(1,1,2,2),

  Time = c(1,2,1,2),

  x1 = c(5,3,6,2),

  x2 = c(6,5,1,4)

)

View(mydata)

md <- melt(mydata, id = c('ID', 'Time'))

View(md)


# 重铸
# dcast()读取已融合的数据
newdata <- dcast(md, formula =, fun.aggregate = )
# formula 描述想要的最后结果
# fun.aggregate为可选的数据整合函数
[AppleScript] 纯文本查看 复制代码
(a <- dcast(md, ID ~ variable, mean))

(b <- dcast(md, Time ~ variable, mean))

(c <- dcast(md, ID ~ Time, mean))



(d <- dcast(md, ID + Time ~ variable))

(e <- dcast(md, ID + variable ~ Time))

(f <- dcast(md, ID ~ Time + variable))



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x



上一篇:R语言实战 第五章 上
下一篇:序列比对作图
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|生信技能树    

GMT+8, 2019-3-25 00:10 , Processed in 0.033943 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.