我们将检查的编程结构包括:控制流语句和用户定义的函数。
在上一课中,我们对单个变量执行了摘要统计或描述性统计,但是在本课中,我们将研究变量之间的相互关系。 相互关系分析以不同的形式出现,在本课程中,我们将研究协方差,相关和线性回归技术。
您可能已经发现,当我们编写更复杂的R脚本时,有些场景需要决策,R提供了许多灵活的选项来使用条件表达式和迭代表达式来控制执行流程。
我们还提到R是一种功能性和面向对象的编程语言。 在本课程中,我们将研究在分析过程中如何定义和使用函数。
我们将学习如何创建不同类型的R函数。
我们已经学习了如何使用直方图检查单个变量或使用散点图检查两个变量的数据趋势。 在本课程的最后一部分,我们将学习如何通过学习协方差,相关性和线性回归来分析2个变量之间的关系。
让我们研究R中的决策。
在此示例中,我们使用runif()或随机均匀分布函数生成1至100之间的1个随机数。 该函数返回浮点值,在这种情况下,我们只想处理整数值,因此我们使用as.integer()函数来丢弃数字的小数部分。
为了获得可重现的结果,我们在第2行中决定在请求数字之前为R的伪随机数生成器设置静态种子值。
如果您希望在执行此脚本时具有随机性,则显然每次都使用不同的种子值。
该脚本的目的是打印一个说明随机数是奇数还是偶数的语句。
我们在if语句后的括号内声明条件表达式。 在这里,我们检查将模2运算符应用于该数字的结果是否为零(0)。 如果没有余数,那么我们知道数字确实是偶数,R将执行在{}大括号内定义的代码。
如果第一个条件表达式的计算结果为FALSE,则将测试下一个条件表达式,或者在这种情况下,将执行最终的else子句。
注意此示例中显示的括号和凹痕的位置。 此示例与各种R编码样式指南一致。
在本课程中,我们将使用模拟数据。
R有许多创建可用于分析的数据的方法。 两种最常见的分布类型是均匀分布和归一化分布。
函数runif和rnorm可用于生成具有相应分布特性的值向量。
对于正态分布,您可以提供平均值和标准偏差。 例如,如果您要创建一个包含100个可能的测试分数的大型数据集,且其正态分布在均值75附近,而标准偏差或分布度量为2,则可以使用所示示例。 要可视化并验证数据分布,可以使用绘图或历史记录功能。
与大多数功能编程语言一样,R提供程序结构来控制迭代或循环行为。 在本课中,我们将检查每个迭代操作。
repeat语句可用于定义将继续无限期迭代的语句块。
break语句用于退出循环。 在此示例中,我们仅检查存储在变量x中的值是否大于9,就退出循环,否则将打印出x的当前值,将该值加1,然后循环重复。 当存储在变量x中的值大于9时,我们使用break语句退出循环并在脚本中继续。
条件循环结构定义括号内的初始条件或前提条件。
在这种情况下,我们进入循环代码的条件包括检查存储在变量curr中的值是否小于或等于我们称为整数的整数矢量中的标记数。
回想一下,在R代码块中,通常使用大括号或大括号{}来定义代码块。 如果表达式为单行,而另一种选择是使用分号(:)将多个表达式组合在一行上,则可以避免使用大括号。 在此示例中,我们实际上在做这两种技术。 这似乎令人困惑,因此如果您有多个开发人员在一个项目上工作,则应考虑样式准则。
在第3行,我们初始化了变量p的值,并在一行上进行了curr。
在第6行,我们使用if语句检查标记向量中的值是否大于或等于50,如果是,则将p变量中的值加1。
在第7行,上面的if语句被认为是完整的表达式,因此,第7行的代码将针对每次迭代执行。
一旦不再满足循环条件,将使用sprintf()函数生成味精,然后使用cat()函数将其发送到标准输出显示。
当迭代方案具有明确定义的迭代次数时,可以在R中使用for语句。
第一个示例使用序列函数创建值的临时向量。 i的值将从5的值开始,然后将该值增加5直到最终迭代达到15。
第二个示例迭代现有的整数向量,由于不需要标记向量的索引值,因此我们可以使用for语句的简化版本。 当我们遍历这些值时,如果该值大于等于50,则计数器p将递增。 这种形式的for循环可用于迭代任何向量数据结构,并且它将始终检查向量中从第一个位置到最后位置的每个元素。
From: https://bytes.com/topic/apis/insights/958470-lesson-5-part1-r-programming-structures