在整个课程中,我们一直在使用许多内置的R函数。
在开始使用R more之后,您将到达想要创建语句的可重用部分的地步。
函数只是一组命名为R的表达式,被认为是function()类型的R对象。
输入值或函数参数按值传递给函数。 每个参数都按位置或名称与函数定义匹配。
我们使用了也被认为是通用的内置函数,例如plot()函数。 泛型函数旨在接受各种不同的参数。 R函数可以接受可变长度的输入参数,甚至可以接受对其他函数的引用。
调用函数时,实际参数会分配给函数内的局部变量。 函数主体中的语句根据输入数据进行评估。 当到达return()语句或到达函数主体中的最终表达式时,控制权将返回给调用函数。
如果没有显式数据返回到调用函数,则将返回最后一个表达式生成的输出。
让我们看一个简单的R函数的例子。
我们想发现我们经常在编写代码来确定通过课程的学生人数,因此我们决定定义一个函数来简化我们的代码。
该函数是使用function()表达式定义的。 该函数的名称已指定为numPassed,并且该函数采用单个参数。
第3至6行的注释有助于说明该功能的用法,包括预期的输入和输出数据类型。
函数的主体或内容包含在大括号({})中。 我们决定使用带有条件表达式的启用向量的sum()函数来计算分数为50或更高的学生人数。 根据第7行中定义的标准,第8行上的pass对象实际上是布尔值的向量。
如果要检查函数的源代码,可以在R控制台中键入该函数的名称,而无需指定任何参数。
此函数将接受单个数据帧或列表,并将对数据结构的每个元素执行条件表达式测试。 如果学生获得50分或更高的分数,则将生成逻辑值TRUE。 这些逻辑值收集在称为pass的局部向量中。
然后,我们使用sum()函数对TRUE值的数量进行计数,并将数据作为整数返回给调用函数。
最后,在串联或cat()函数中调用该函数。
R的最常用功能之一是* apply()系列函数。
在这里,我们使用lapply()或List Apply函数。 我们要调用的函数是基本包中的均值或均值函数。
平均值函数将在名为m的data.frame的每一列上执行。
lapply()函数始终返回一个列表作为其输出。 在我们的方案中,提供了具有按主题的平均值或平均值的列表。
在右侧的框中,我们看到如何使用sapply()或简化的apply函数。 sapply()基本上执行与lapply()相同的任务,但是它将输出强制为向量或矩阵。 请注意,sapply如何生成双值向量,其中每个元素都有一个与之关联的名称。 最终表达式演示了如何检索名为“ Math”的元素。
在这里,我们使用与使用lapply()调用数据集中的函数相同的方法。
在前面的示例中,我们使用了内置函数mean,在此示例中,我们使用了我们创建的函数numPassedCourse来查找通过课程的学生人数。
这些使用apply()函数的示例非常简单,但是您可能会看到一行R代码实际上是如何执行包括迭代在内的复杂操作的。
现在我们已经了解了控制和功能的流程,现在让我们检查多个变量之间的数据关系。
在我们的案例研究中,我们要确定一个人的身高与其鞋子尺码之间是否存在关系。
我们将使用R来模拟用于分析的数据集,并将使用定量度量和可视化来执行数据分析。
有一些不同的定量度量可以用来度量多个变量之间的变化程度。
正协方差表示两个变量之间存在正线性关系,负协方差表示相反。
相关性是变量之间线性关系程度的类似统计量度,但是它具有定义明确的值范围,具有额外的好处。 系数范围为-1至1。
例如,相关系数为0.8表示两个变量之间存在很强的线性关系。 因此,如果变量1增加,则变量2也有类似的增加。如果相关系数接近零(0),则变量值的变化之间的关系最小。 负系数表示两个变量的值变化方向彼此相反。
在这里,我们将创建2个高度和鞋子尺寸的均匀分布以进行分析。
我们使用协方差或cov()函数来计算协方差度量,并使用相关性或cor()函数来计算相关性。
这些值存储在变量中,因为它们将在我们最终的可视化中使用。
我们使用基本的图形包plot()函数来创建生成数据的散点图。 在视觉上,这两个度量之间似乎没有关系。 相关和协方差的值支持我们的视觉理解,因为它们的值接近(0)零。
在第22行,创建了线性回归模型并将其存储在名为lm1的变量中。
线性模型函数或lm()可用于执行多个数据集的分析并确定变量之间关系的线性近似。 请注意,为lm()函数提供了一个公式。 在R中,公式由波浪号(〜)字符组成,在这种情况下,左侧的变量被认为是响应,而波浪号右侧的变量是所考虑的术语。
对象lm1包含大量详细信息。 在这种情况下,我们使用对象向图中添加一条线以可视化关系。
我们在第26行使用数学表达式来调整鞋的尺寸,以进行下一次分析。
顺便说一句,该表达式使用整数除法来引入变量之间的关系。
同样,我们确定修正变量的协方差和相关系数。
在我们对随机生成的统一鞋子尺寸和高度进行的初始模拟中,几乎没有相关性。
在这里,我们从视觉上看到存在很强的线性相关性,并且相关系数的值与我们的视觉分析相符。
我们还执行了修订的线性回归模型,并将结果绘制在图形上。
在这里,我们可以看到高度和鞋子尺寸测量前后的摘要。
在右图所示的鞋码修改数据中,很强的相关性很明显。
您可以在本课程后进行许多实验练习,包括:使用R中的Apply系列函数对骰子进行仿真,关联和对数据集进行重新编码。
From: https://bytes.com/topic/apis/insights/958471-lesson-5-part2-r-programming-structures