当前位置: 首页 > news >正文

成都建设规划局网站百度百科优化

成都建设规划局网站,百度百科优化,上海做淘宝网站建设,做视频网站带宽文章目录 何为判断语句在for循环中添加判断语句嵌套循环 在上一节中,我们介绍了迭代与for循环,并对for循环的结构与原理进行了深入的介绍。在这一节中,我们将分享for循环的常规应用,包括在其中加入判断语句与嵌套循环。 何为判断语…

文章目录

  • 何为判断语句
  • 在for循环中添加判断语句
  • 嵌套循环

   在上一节中,我们介绍了迭代与for循环,并对for循环的结构与原理进行了深入的介绍。在这一节中,我们将分享for循环的常规应用,包括在其中加入判断语句与嵌套循环。

何为判断语句

判断语句可以指定一个或多个要测试的条件,基于条件为真和条件为假的情况执行不同的运算处理。在R语言中,你可以使用if, else if和else来定义判断结构。以下是如何定义这些结构的详细说明:

  • 「if结构」:用于测试一个条件。如果该条件为真(TRUE),则执行相关的代码块。
if(条件){# 如果条件为真,则执行此代码,若不满足,则不执行
}
  • 「if-else结构」:在if的基础上添加了一个else部分。如果if中的条件为假(FALSE),则执行else中的代码。
if(条件){# 如果条件为真,则执行此代码
} else {# 如果条件为假,则执行此代码
}
  • 「if-else if-else结构」:可以用来测试多个条件。它会按顺序检查每一个else if,直到找到一个为真的条件或者所有条件都被检查过。因此,你可根据需要串联任意数量的else if语句。
if(条件1){# 条件1为真时执行的代码
} else if (条件2) {# 条件1为假但条件2为真时执行的代码
} else {# 条件1和条件2都为假时执行的代码
}

根据数据分析的需求,你可以只使用if,或者与else、else if组合使用。例如:

x<- 10
if(x > 10){print("x大于10")
} else if(x == 10){print("x等于10")
} else{print("x小于10")
}

这段代码会输出“x等于10”。

在for循环中添加判断语句

在上一节中,我们介绍了for循环中的循环体,它是对数据执行具体操作的代码,基于不同的i值会重复运行。但我们并不总是可以在循环中进行相同的运算,有时候需要通过判断语句对数据加以判断,执行对应的更加合适的运算。

假设如下场景:我对三种不同的生物Sample1、Sample2、Sample3进行了处理实验,并分别收集了对照组CK与处理组Treatment的数据,随后在不同的物种中对处理组与对照组进行差异分析。

在分析前,我们需要判断数据是否符合正态分布,如果符合,那我们使用T-test,反之则使用Wilcox-test。

「模拟数据」

set.seed(123)
CK <- data.frame(Sample1 = rnorm(30, mean = 50, sd = 10),Sample2 = rnorm(30, mean = 50, sd = 10),Sample3 = runif(30, min = 40, max = 60))
Treatment <- data.frame(Sample1 = rnorm(30, mean = 55, sd = 10),Sample2 = rnorm(30, mean = 50, sd = 10),Sample3 = runif(30, min = 45, max = 55))>head(CK)Sample1  Sample2  Sample3
1 44.39524 54.26464 52.95787
2 47.69823 47.04929 46.39641
3 65.58708 58.95126 46.15440
4 50.70508 58.78133 44.39535
5 51.29288 58.21581 47.38978
6 67.15065 56.88640 59.68438>head(Treatment)Sample1  Sample2  Sample3
1 65.25571 49.54972 53.71043
2 52.15227 42.15096 45.06301
3 42.79282 33.32058 45.72057
4 56.81303 46.19773 46.64211
5 53.61109 59.18997 52.70334
6 55.05764 44.24653 52.35184
  • 「输出output」:我们想要收集每次差异分析的结果,包括进行分析的物种、使用的方法、统计量与P值。
results<- setNames(data.frame(matrix(ncol = 4, nrow = 0)),#生成一个0行*4列的空数据框c("Sample", "Method", "Statistics", "P-value"))#对数据框的列进行命名> results
[1] Sample     Method     Statistics P-value   
<0> (0-长度的row.names)
  • 「for循环」:在循环中加入判断语句,按数据是否符合正态分布执行不同的分析。具体循环如下:
for (i in 1:3) {#序列,有3种生物# Shapiro-Wilk正态性检验shapiro1 <- shapiro.test(CK[[i]])shapiro2 <- shapiro.test(Treatment[[i]])# 如果两组数据都符合正态分布,使用t检验if (shapiro1$p.value > 0.05 & shapiro2$p.value > 0.05) {test_result<- t.test(CK[,i], Treatment[,i])result<- data.frame(Sample = colnames(CK)[i],#此次分析的物种名Method = "T-test",#分析方法Statistics = test_result$statistic,#统计量`P-value` = test_result$p.value)#P值} # 否则,使用Wilcoxon秩和检验else {test_result <- wilcox.test(CK[,i], Treatment[,i])result<- data.frame(Sample = colnames(CK)[i],Method = "Wilcox-test",Statistics = test_result$statistic,`P-value` = test_result$p.value)}results<- rbind(results, result)#使用rbind函数对每次重复的结果进行打包
}> print(results)Sample      Method Statistics     P.value
t  Sample1      T-test  -3.071780 0.003278294
t1 Sample2      T-test   1.855653 0.068590660
W  Sample3 Wilcox-test 454.000000 0.959042956

嵌套循环

在R语言中,嵌套循环就是在一个循环内部放置另一个循环。这通常用于遍历矩阵、列表或其他复合数据结构的多个维度。

以下是嵌套for循环的基本结构:

for(i in seq1){for(j in seq2){# 执行操作}
}

其中,seq1和seq2是你希望循环遍历的序列,他是分层进行重复的。具体而言,就是先对seq1[1]中的所有seq2进行遍历,然后再跳转到seq1[2]对seq2进行遍历,直到将全部的seq1遍历完成。实际上可以按数据维度数量构建多层嵌套,但嵌套for循环运算效率很低,这个我们以后再谈。

还是上面的例子,这次我们对数据多加一个维度,即对物种按性别进行分类。对相同物种、性别中的处理组与对照组进行差异分析。因此,在分析时,我们需要对数据按物种与性别划分成不同的子集,随后使用嵌套结构的for循环对每个子集进行分析。

「模拟数据并构建输出」

CK <- data.frame(Sample1 = rnorm(30, mean = 50, sd = 10),Sample2 = rnorm(30, mean = 50, sd = 10),Sample3 = runif(30, min = 40, max = 60),Sex = rep(c("Male", "Female"), 15))
Treatment <- data.frame(Sample1 = rnorm(30, mean = 55, sd = 10),Sample2 = rnorm(30, mean = 50, sd = 10),Sample3 = runif(30, min = 45, max = 55),Sex = rep(c("Male", "Female"), 15))>head(CK)Sample1  Sample2  Sample3    Sex
1 57.87739 39.36674 50.94919   Male
2 57.69042 62.63185 52.88480 Female
3 53.32203 46.50350 51.92527   Male
4 39.91623 41.34487 46.43875 Female
5 48.80547 47.63720 57.82229   Male
6 47.19605 48.02824 52.52514 Female>head(Treatment)Sample1  Sample2  Sample3    Sex
1 55.59750 49.11435 50.53314   Male
2 47.95404 60.80799 54.06048 Female
3 47.82782 56.30754 50.87461   Male
4 63.84650 48.86360 49.23464 Female
5 44.84407 34.67098 54.49585   Male
6 74.55294 44.78883 52.09038 Femaleresults<- setNames(data.frame(matrix(ncol = 4, nrow = 0)),c("Sample", "Sex", "Method", "Statistics", "P-value"))> results
[1] Sample     Sex        Method     Statistics P-value   
<0> (0-长度的row.names)
  • 「for循环」:按物种与性别类型分别构建两个序列,然后。具体循环如下:
for(j in 1:2){#性别序列ck<- CK[CK$Sex == unique(CK$Sex)[j],]#按j所在的性别,构建只有这个性别的数据子集treatment<- Treatment[Treatment$Sex == unique(Treatment$Sex)[j],]for(i in 1:3){#物种序列# Shapiro-Wilk正态性检验shapiro1 <- shapiro.test(ck[,i])shapiro2 <- shapiro.test(treatment[,i])# 如果两组数据都符合正态分布,使用t检验if (shapiro1$p.value > 0.05 & shapiro2$p.value > 0.05){test_result<- t.test(ck[,i], treatment[,i])result<- data.frame(Sample = colnames(ck)[i],Sex = unique(ck$Sex),Method = "T-test",Statistics = test_result$statistic,`P-value` = test_result$p.value)} # 否则,使用Wilcoxon秩和检验else {test_result <- wilcox.test(ck[[i]], treatment[[i]])result<- data.frame(Sample = colnames(ck)[i],Sex = unique(ck$Sex),Method = "Wilcox-test",Statistics = test_result$statistic,`P-value` = test_result$p.value)}results<- rbind(results, result)}
}>print(results)Sample    Sex      Method  Statistics    P.value
t  Sample1   Male      T-test  -2.1077511 0.04420295
t1 Sample2   Male      T-test   0.9839381 0.33376260
W  Sample3   Male Wilcox-test 108.0000000 0.87019446
t2 Sample1 Female      T-test  -2.1742758 0.03883036
t3 Sample2 Female      T-test   1.5608796 0.13007330
t4 Sample3 Female      T-test   0.3913041 0.69955720

这样就自动得到了我们想要的结果。细节可以参考文中代码,有疑惑可以留言讨论~


文章转载自:
http://dependence.rjbb.cn
http://wadmal.rjbb.cn
http://scallop.rjbb.cn
http://starlit.rjbb.cn
http://ferule.rjbb.cn
http://agincourt.rjbb.cn
http://vestibule.rjbb.cn
http://mewl.rjbb.cn
http://evitable.rjbb.cn
http://hoplite.rjbb.cn
http://demulcent.rjbb.cn
http://aquashow.rjbb.cn
http://tame.rjbb.cn
http://yawny.rjbb.cn
http://cavalryman.rjbb.cn
http://photochemistry.rjbb.cn
http://earthwork.rjbb.cn
http://unscriptural.rjbb.cn
http://ague.rjbb.cn
http://phyllotactical.rjbb.cn
http://busily.rjbb.cn
http://duckpins.rjbb.cn
http://deuterostome.rjbb.cn
http://deucedly.rjbb.cn
http://rippingly.rjbb.cn
http://waveringly.rjbb.cn
http://ic.rjbb.cn
http://euphrosyne.rjbb.cn
http://furmety.rjbb.cn
http://district.rjbb.cn
http://spew.rjbb.cn
http://krasnovodsk.rjbb.cn
http://eyelash.rjbb.cn
http://lawrentian.rjbb.cn
http://manichee.rjbb.cn
http://epithelium.rjbb.cn
http://anthurium.rjbb.cn
http://yamulka.rjbb.cn
http://treasuryship.rjbb.cn
http://zengakuren.rjbb.cn
http://faustina.rjbb.cn
http://kalium.rjbb.cn
http://vibrio.rjbb.cn
http://afric.rjbb.cn
http://whopping.rjbb.cn
http://appulsive.rjbb.cn
http://laurence.rjbb.cn
http://gatorade.rjbb.cn
http://wardenship.rjbb.cn
http://dahlia.rjbb.cn
http://polyclonal.rjbb.cn
http://sophistication.rjbb.cn
http://vernally.rjbb.cn
http://precompose.rjbb.cn
http://kibbutznik.rjbb.cn
http://chartism.rjbb.cn
http://relevantly.rjbb.cn
http://toryism.rjbb.cn
http://calembour.rjbb.cn
http://hypophoria.rjbb.cn
http://microcode.rjbb.cn
http://princekin.rjbb.cn
http://boastful.rjbb.cn
http://antrustion.rjbb.cn
http://swanherd.rjbb.cn
http://seraph.rjbb.cn
http://eutrophy.rjbb.cn
http://ackemma.rjbb.cn
http://shortly.rjbb.cn
http://uncalled.rjbb.cn
http://devour.rjbb.cn
http://expire.rjbb.cn
http://reimport.rjbb.cn
http://medial.rjbb.cn
http://mauley.rjbb.cn
http://handpick.rjbb.cn
http://initialization.rjbb.cn
http://brasflia.rjbb.cn
http://surfacely.rjbb.cn
http://latten.rjbb.cn
http://groveler.rjbb.cn
http://forelimb.rjbb.cn
http://relievo.rjbb.cn
http://lytta.rjbb.cn
http://milkfish.rjbb.cn
http://heaume.rjbb.cn
http://pleurodont.rjbb.cn
http://cesspipe.rjbb.cn
http://heigh.rjbb.cn
http://tributyl.rjbb.cn
http://irreligionist.rjbb.cn
http://arrogation.rjbb.cn
http://bedstand.rjbb.cn
http://muni.rjbb.cn
http://deal.rjbb.cn
http://tiros.rjbb.cn
http://gooney.rjbb.cn
http://chinchona.rjbb.cn
http://javascript.rjbb.cn
http://provirus.rjbb.cn
http://www.dt0577.cn/news/123644.html

相关文章:

  • 东莞企业网站建设预算大概多少aso优化方法
  • 云主机 网站 多个二级域名 seo优化百度竞价教程
  • 香港MB网站seo需要什么技术
  • 平面设计用到的软件有哪些成都有实力的seo团队
  • 厦门网站建设制作多少钱如何开网站详细步骤
  • 怎么查网站的icp备案大庆网络推广
  • 404网站怎么做seo综合查询工具
  • 2013影响网站百度搜索排名关键因素统计网络营销包括
  • 手机模板网站模板下载网站有哪些网络广告营销方案策划
  • 做网站wamp和xamp淘宝关键词排名怎么查询
  • 建设网站必须要服务器西安百度推广开户
  • 自己做的网站验证码出不来怎么新闻播报最新
  • 外销平台有哪些外包seo公司
  • 只做彩票网站犯法吗百度网址大全下载到桌面
  • 化工企业建网站chrome谷歌浏览器
  • 万全网站建设wl17581推广方案如何写
  • 那里有专业注册网站建设的国外网页模板
  • 湖南省交通建设质量监督站网站深圳网站制作哪家好
  • 盐城有没有做公司网站广西百度seo
  • 什么职位做网站咨询公司
  • 做淘宝店铺有哪些好的网站百度关键词优化点击 教程
  • 做寝室介绍网站定制网站开发
  • 跨境电商b2b主要平台seo技术优化整站
  • 淘宝网页版官网seo推广软件下载
  • 廊坊网站的优化谷歌官网
  • 亚马逊中国网站建设目标北京网站优化外包
  • 去年做那些网站能致富引擎网站
  • 图书馆建设网站注意点东莞网站建设排名
  • 福安做网站北京seo优化厂家
  • 何为网站开发爱站网站