随笔分类 -  R

上一页 1 ··· 4 5 6 7 8 9 10 下一页
摘要:进行分支计算的一个替代方法是 ifelse( )。这个函数接收一个逻辑向量作为判定条件,并且返回一个向量。对于逻辑判定条件内的每一个元素,若是 TRUE,则选择第 2个参数 yes 中所对应的元素;若是 FALSE,则选择第 3 个参数 no 中所对应的元素。总而言之,ifelse( ) 是 if 阅读全文
posted @ 2019-01-22 10:51 NAVYSUMMER 阅读(307) 评论(0) 推荐(0)
摘要:由于 if 本质上是一个原函数,它的返回值就是满足条件分支表达式的值,因此,if 表达式也可以用作内联函数。我们以 check_positive( )为例进行说明。尽管条件表达式中不另写 return( ) 语句,也可以得到函数体中 if 表达式的返回值,从而达到与包含 return( ) 同样的效 阅读全文
posted @ 2019-01-22 10:50 NAVYSUMMER 阅读(310) 评论(0) 推荐(0)
摘要:与很多编程语言一样,if 表达式用来处理逻辑条件。在 R 中,逻辑条件通常表达为某个表达式返回的单值逻辑向量。例如,我们可以写一个简单的函数 check_positive,如果输入一个正数则返回 1,否则不返回任何值:check_positive <- function(x) {if (x > 0) 阅读全文
posted @ 2019-01-22 10:48 NAVYSUMMER 阅读(283) 评论(0) 推荐(0)
摘要:赋值可能是所有编程语言中最基本的表达式了,它所做的就是将一个值(value)赋予或者绑定到一个符号上,使得我们能够通过符号来访问这个值。尽管编程语言之间有相似性,但 R 采用 <-符号来表示赋值。这和其他语言用 = 有点不同,虽然在 R 中也可以用 = 进行赋值:x <- 1y <- c(1, 2, 阅读全文
posted @ 2019-01-22 10:45 NAVYSUMMER 阅读(797) 评论(0) 推荐(0)
摘要:一些函数可以非常灵活,因为它们能够接受各种各样的输入值,满足广泛的需求。但是,很多情况下,更多的灵活性意味着增加更多的参数。如果使用一个非常灵活的函数,每次需要指定几十个参数,那么查看代码时肯定会觉得一片混乱。在这种情况下,给参数设定合理默认值,将会极大地简化调用函数的代码。使用 arg = val 阅读全文
posted @ 2019-01-22 10:41 NAVYSUMMER 阅读(342) 评论(0) 推荐(0)
摘要:函数是一个可以调用的对象。本质上讲,它是一个具有内在逻辑的机制,输入一组值(形参或实参),并依据其逻辑返回一个值。在前面的章节中,我们遇到过一些 R 的内置函数。例如,在 is.numeric( )函数中输入任意一个 R 对象,会返回一个判断该对象是否为数值向量的逻辑值。类似的还有is.functi 阅读全文
posted @ 2019-01-22 10:41 NAVYSUMMER 阅读(111) 评论(0) 推荐(0)
摘要:函数是用于解决一些特定问题的特定逻辑或者过程的集合的一种合理抽象,开发人员通常希望函数具有一般性,以适用于各种各样的场景。这样就可以轻松地使用它来解决相似的问题,而无需为每个问题编写过多的专用函数。泛化是使一个函数具有更广泛的适用性。在弱类型的编程语言(例如 R )中泛化函数非常方便的,但是当它被不 阅读全文
posted @ 2019-01-22 10:40 NAVYSUMMER 阅读(551) 评论(0) 推荐(0)
摘要:因为 R 中的函数不是强类型的,所以它可以非常灵活。换句话说,在调用函数之前,输入对象的类型是不固定的。即使函数的最初设计是针对标量运算,当将函数“+”作用到向量上时,它也会自动拓展以适用于向量运算。例如,我们可以运行以下代码,而不必对函数做任何其他修改:add(c(2, 3), 4)## [1] 阅读全文
posted @ 2019-01-22 10:39 NAVYSUMMER 阅读(123) 评论(0) 推荐(0)
摘要:就像在数学中一样,函数一旦定义了,就可以被调用。调用语法为:“函数名(参数 1, 参数 2, ...)”。请看如下示例:add(2, 3)## [1] 5调用函数的过程非常清晰。就像示例中调用函数,R 首先会在环境中查找是否存在一个名为 add 的函数,然后它会明白 add 是我们刚才创建的函数。之 阅读全文
posted @ 2019-01-22 10:38 NAVYSUMMER 阅读(152) 评论(0) 推荐(0)
摘要:在 R 中创建函数很容易。例如我们定义一个名为 add 的函数,将 x 和 y 相加:add <- function(x, y){x + y}上述函数的语法(x, y)指定了函数的参数。换句话说,此函数需要两个名为 x 和 y的参数。{ x + y }是函数体,包含了一系列由 x 和 y 及其他可用 阅读全文
posted @ 2019-01-22 10:37 NAVYSUMMER 阅读(164) 评论(0) 推荐(0)
摘要:数据框是指有若干行和列的数据集。它与矩阵类似,但并不要求每列都是相同的类型。这与最常见的数据形式是一致的:每行或每条记录由不同类型的列来描述。表 2-1 充分展示了数据框的特点。表 2-1姓名 性别 年龄 专业Ken Male 24 FinanceAshley Female 25 Statistic 阅读全文
posted @ 2019-01-22 10:36 NAVYSUMMER 阅读(291) 评论(0) 推荐(0)
摘要:现实中,数据通常存储在文件中。R 提供了许多函数以便从文件中读取一个表格或将一个数据框写入文件。如果一个文件储存了一个表格,通常它都会被很好地组织起来,即按照一定规则将行和列有序地排列。大多数情况下,我们不必逐个字节地读取文件,而是调用 read.table( )或 read.csv( )等函数。C 阅读全文
posted @ 2019-01-22 10:35 NAVYSUMMER 阅读(366) 评论(0) 推荐(0)
摘要:对一个数据框而言,有很多实用的函数,这里我们只介绍几个最常用的。summary( )函数作用在数据框上,将生成一个汇总表来显示每一列的情况:summary(persons)## Name Gender Age Major## Length:3 Female:2 Min. :23.0 Length:3 阅读全文
posted @ 2019-01-22 10:34 NAVYSUMMER 阅读(215) 评论(0) 推荐(0)
摘要:值得注意的是,在默认情况下,数据框会以更有效地利用内存的方式来存储数据。但有时,这种存储方式会导致意想不到的问题。例如,当我们用一个字符向量作为创建数据框的列时,R 会默认将其转换成因子,相同值只存储一次,以免重复存储占用过多内存。因子本质上是一个带有水平(level)属性的整数向量,其中“水平”是 阅读全文
posted @ 2019-01-22 10:33 NAVYSUMMER 阅读(671) 评论(0) 推荐(0)
摘要:处理列表和矩阵的两种方法都可以用来为一个数据框子集赋值。1.以列表方式赋值我们可以同时使用$和<-对列表中的成分重新赋值。df1$score <- c(0.6, 0.3, 0.2, 0.4, 0.8)df1## id level score## a 1 0 0.6## b 2 2 0.3## c 3 阅读全文
posted @ 2019-01-22 10:32 NAVYSUMMER 阅读(289) 评论(0) 推荐(0)
摘要:因为数据框是由列向量组成、有着矩阵形式的列表,所以我们可以用两种操作方式来访问数据框的元素和子集。1.以列表形式构建数据框子集如果把数据框看作是由向量组成的列表,我们可以沿用列表的操作方式来提取元素或构建子集。例如,可以使用$按列名来提取某一列的值,或者用[[符号按照位置提取。df1$id## [1 阅读全文
posted @ 2019-01-22 10:31 NAVYSUMMER 阅读(182) 评论(0) 推荐(0)
摘要:数据框既是列表的特例,也是矩阵的推广,因此访问这两类对象的方式都适用于数据框。df1 <- data.frame(id = 1:5, x = c(0, 2, 1, -1, -3), y = c(0.5, 0.2, 0.1,0.5, 0.9))df1## id x y## 1 1 0 0.5## 2 阅读全文
posted @ 2019-01-22 10:29 NAVYSUMMER 阅读(155) 评论(0) 推荐(0)
摘要:我们可以调用 data.frame( )函数,对每一列提供相应类型的列向量来创建一个数据框。persons <- data.frame(Name = c("Ken", "Ashley", "Jennifer"),Gender = c("Male", "Female", "Female"),Age = 阅读全文
posted @ 2019-01-22 10:28 NAVYSUMMER 阅读(683) 评论(0) 推荐(0)
摘要:列表(list)是一个广义的向量,它可以包含其他类型的对象,甚至可以包括其他列表。列表的灵活性使得它非常有用。举个例子,用 R 拟合一个线性模型,其结果本质上就是一个列表,其中包含了线性回归的详细结果,如线性回归系数(数值向量)、残差(数值向量)、QR 分解(包含一个矩阵和其他对象的列表)等。因为这 阅读全文
posted @ 2019-01-22 10:26 NAVYSUMMER 阅读(124) 评论(0) 推荐(0)
摘要:R 中有许多和列表相关的函数。例如,如果我们不能确定一个对象是否是列表,可以调用 is.list( )进行判断:l2 <- list(a = c(1, 2, 3), b = c("x", "y", "z", "w"))is.list(l2)## [1] TRUEis.list(l2$a)## [1] 阅读全文
posted @ 2019-01-22 10:25 NAVYSUMMER 阅读(118) 评论(0) 推荐(0)

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