随笔分类 -  R

上一页 1 ··· 3 4 5 6 7 8 9 10 下一页
摘要:之前,我们讨论过可以使用 for 循环,在一个向量或列表上进行迭代,重复执行某个表达式。但是在实践中,for 循环往往是最后的选择,因为每次迭代都是相互独立的,所以我们可以使用更简洁更方便的读写方式来实现同样的效果。举个例子,以下代码使用 for 循环创建了一个列表,它由 3 个相互独立、服从正态分 阅读全文
posted @ 2019-01-22 11:19 NAVYSUMMER 阅读(167) 评论(0) 推荐(0)
摘要:相比 lapply( )和 sapply( )在一个向量上迭代,mapply( )可以在多个向量上进行迭代。换句话,mapply 是 sapply 的多元版本:mapply(function(a, b, c) a * b + b * c + a * c,a = c(1, 2, 3), b = c(5 阅读全文
posted @ 2019-01-22 11:18 NAVYSUMMER 阅读(207) 评论(0) 推荐(0)
摘要:尽管 sapply 非常方便和智能,但有时智能可能隐藏着风险。假如我们有一个数字列表:x <- list(c(1, 2), c(2, 3), c(1, 3))如果我们想得到一个向量,其中每个元素都是 x 中对应数字的平方。那么,sapply( )就比较方便易用,因为它会自动尝试简化结果的数据结构:s 阅读全文
posted @ 2019-01-22 11:17 NAVYSUMMER 阅读(223) 评论(0) 推荐(0)
摘要:列表并非总是存储结果的最佳容器。有时,我们希望将结果放在一个向量或者矩阵中。sapply( )函数可以根据结果的结构将其合理简化。假设,我们将平方运算应用到 1:10 的每个元素上。如果使用 lapply( ),返回的结果就是一个包含平方数的列表。实际上,结果列表的所有成分都是一个单值数值向量,所以 阅读全文
posted @ 2019-01-22 11:16 NAVYSUMMER 阅读(543) 评论(0) 推荐(0)
摘要:正如前面展示的,lapply( )函数接收一个向量和一个函数作为输入参数。它将这个函数应用到向量中的每个元素,再将结果以列表的形式返回。当每次迭代都是相互独立时,这个函数就非常好用。因为在这种情况下,我们不需要构建一个显式迭代器来明确每步迭代过程。lapply( )不仅适用于向量,也适用于列表。假设 阅读全文
posted @ 2019-01-22 11:15 NAVYSUMMER 阅读(421) 评论(0) 推荐(0)
摘要:基本数学函数: abs, sqrt, ceiling, floor, trunc, round, signif, sin, asin, sinh, log(x, base=n), log, log10, exp 1 2 abs(-2) exp(c(-1,0,1,2)) 1 2 abs(-2) exp 阅读全文
posted @ 2019-01-22 11:12 NAVYSUMMER 阅读(147) 评论(0) 推荐(0)
摘要:逻辑向量只取 TRUE 或 FALSE,主要用来筛选数据。实践中,由多个逻辑向量构建联合条件是很常见的,并且联合条件中有可能涉及多个逻辑运算符和逻辑函数。 逻辑运算符 逻辑函数 处理缺失值 逻辑强制转换 阅读全文
posted @ 2019-01-22 11:10 NAVYSUMMER 阅读(158) 评论(0) 推荐(0)
摘要:一些被设定接收逻辑输入的函数也可以接收非逻辑向量,例如数值向量。但是,函数处理非逻辑向量的方式可能与逻辑向量有所不同。因为,非逻辑向量会被强制转换成逻辑向量。举个例子,如果我们在 if 条件中输入一个数值向量,它就会被强制转换:if (2) 3## [1] 3if (0) 0 else 1## [1 阅读全文
posted @ 2019-01-22 11:09 NAVYSUMMER 阅读(136) 评论(0) 推荐(0)
摘要:现实世界中的数据经常包含缺失值,用 NA 表示。下面的数值向量就是一个简单的例子:x <- c(-2, -3, NA, 2, 3, 1, NA, 0, 1, NA, 2)对缺失值进行算术运算也会产生缺失值:x + 2## [1] 0 -1 NA 4 5 3 NA 2 3 NA 4类似地,进行逻辑运算 阅读全文
posted @ 2019-01-22 11:08 NAVYSUMMER 阅读(144) 评论(0) 推荐(0)
摘要:在这一节中,我们将关注聚合逻辑向量并寻找真正的元素。1.聚合逻辑向量正如我们前面提到的,除了二元逻辑运算符,还有一些逻辑聚合函数也是非常有用的。最常用的两个逻辑聚合函数是any( )和all( )。只要给定逻辑向量的任何一个(至少一个)元素是TRUE,函数any( )就返回 TRUE;否则,函数 a 阅读全文
posted @ 2019-01-22 11:07 NAVYSUMMER 阅读(384) 评论(0) 推荐(0)
摘要:与很多编程语言类似,R 可以使用几个运算符进行逻辑运算,如表 5-1 所示。 表 5-1运算符 描述 示例 结果& 向量化 AND c(T, T) & c(T, F) TRUE, FALSE| 向量化 OR c(T, T) | c(T, F) TRUE, TRUE&& 单变量 AND c(T, T) 阅读全文
posted @ 2019-01-22 11:06 NAVYSUMMER 阅读(184) 评论(0) 推荐(0)
摘要:在上一章中,我们学习了一些基于环境和扩展包的函数。本节我们将了解一些处理对象的基本函数。更具体地说,我将向你介绍更多识别数据对象类型(type)和维度(dimension)的函数。你将了解到这些函数的概念以及它们是如何组合使用的。 检查对象类型 识别数据维度 阅读全文
posted @ 2019-01-22 11:04 NAVYSUMMER 阅读(240) 评论(0) 推荐(0)
摘要:矩阵、数组和数据框的性质除了类和类型,还有维度。1.获取数据维度在 R 中,向量是通过一维数据结构创建的:vec <- c(1, 2, 3, 2, 3, 4, 3, 4, 5, 4, 5, 6)class(vec)## [1] "numeric"typeof(vec)## [1] "double"同 阅读全文
posted @ 2019-01-22 11:03 NAVYSUMMER 阅读(609) 评论(0) 推荐(0)
摘要:虽然 R 中的一切都是对象,但它们有不同的类型。试想我们正在处理一个用户自定义的对象,那么,就要根据输入对象的类型来创建相应的函数。例如,我们需要创建一个名为 take_it 的函数,如果输入对象是一个原子向量(例如数值向量、字符向量或者逻辑向量),函数就返回输入对象的第 1 个元素;如果输入对象是 阅读全文
posted @ 2019-01-22 11:01 NAVYSUMMER 阅读(204) 评论(0) 推荐(0)
摘要:表达式(expression)是函数的基本组成部分。R 有非常清晰的语法结构,一个符号或一次函数调用,都是一种表达式。尽管我们所做的事情本质上都是通过函数实现的,但是,R 为一些函数提供了特殊的语法,便于我们写出可读性更高的 R 代码。在下面的几个小节中,我们将了解以下具有特定语法结构的基础表达式: 阅读全文
posted @ 2019-01-22 10:59 NAVYSUMMER 阅读(279) 评论(0) 推荐(0)
摘要:循环(或迭代)通过迭代一个向量(for)或者检查某个条件是否被违背(while),来重复执行某个表达式。如果只需在输入值上做一些改变,而要重复执行同样的任务,那么这样的语言结构(循环)可以很大程度上减少冗余代码。 使用 for 循环 使用 while 循环 阅读全文
posted @ 2019-01-22 10:58 NAVYSUMMER 阅读(328) 评论(0) 推荐(0)
摘要:与 for 循环不同,while 循环会一直运行,直到给定条件不满足为止。例如,下面的 while 循环从 x=0 开始。每次循环都会检查 x<=10 是否成立。如果成立,就执行循环内部的表达式;如果不成立,就终止循环:x <- 0while(x <= 5) {cat(x, "", sep = "" 阅读全文
posted @ 2019-01-22 10:57 NAVYSUMMER 阅读(327) 评论(0) 推荐(0)
摘要:for 循环通过迭代一个给定向量或列表,重复执行某个表达式。for 循环的语法是这样的:for (var in vector) {expr}var 遍历 vector 中的各个元素值,expr 被反复迭代执行。如果 vector 中有 n 个元素,那么上述循环就等价于:var <- vector[[ 阅读全文
posted @ 2019-01-22 10:55 NAVYSUMMER 阅读(334) 评论(0) 推荐(0)
摘要:与处理 TRUE 和 FALSE 条件的 if 相比,switch 语句则是用来处理数字或者字符串,并根据输入返回某个分支。假设输入一个整数 n,switch 返回从第 1 个参数开始的第 n 个参数值:switch(1, "x", "y")## [1] "x"switch(2, "x", "y") 阅读全文
posted @ 2019-01-22 10:53 NAVYSUMMER 阅读(161) 评论(0) 推荐(0)
摘要:上述例子的函数中,都只输入了单一值。如果我们提供一个向量,那么这个函数将产生警告,这是因为 if 语句不能与多值向量共存。check_ _positive(c(1,-1,0))## Warning in if (x > 0) 1: 条件的长度大于一,因此只能用其第一元素## [1] 1从输出结果可以 阅读全文
posted @ 2019-01-22 10:51 NAVYSUMMER 阅读(970) 评论(0) 推荐(0)

上一页 1 ··· 3 4 5 6 7 8 9 10 下一页
交流群 编程书籍