初学者指南R:语法怪癖你会想知道的

我们的实践指南涵盖一些R的第5部分奥秘你需要理解。

为什么x = 3并不总是意味着你认为它应该,关于数据类型和更多。

我提到的在一开始R语法有点古怪,特别是如果你的参照系,几乎任何其他编程语言。这里有一些不寻常的特征的语言你会发现有用的理解当你开始你的学习之旅。

(这个故事是《计算机世界》的“初学者的指南>To read from the beginning, check out介绍;有链接页面的其他部分系列。)

为变量赋值

在几乎每一个其他编程语言我知道,等号将某个值赋给一个变量。你知道,x = 3意味着现在拥有3的值。

至少不是在r,不一定。

在R中,主要的赋值运算符是< -如:

x < - 3

而不是:

x = 3

增加潜在的混乱,等号实际上可以用作一个赋值运算符在R——但并不是所有的时间。你什么时候可以使用它,你什么时候可以不?

初学者的最佳方式来处理这个问题是使用首选的赋值运算符< -和忘记=是允许的。嗨,如果它是足够好的谷歌的R风格指南——他们建议不使用等于给变量赋值,这对我来说已经够好了。

(如果这不是一个足够好的解释给你,但是,你真的想知道的来龙去脉R 5——是的,计数的em, 5——分配选项,查看R手册页面赋值操作符。)

一个注意变量:R是区分大小写的语言。变量x并不等于x,适用于几乎所有R;例如,函数子集()是()不一样的子集。

结合c(或连接,有时转换/强迫)。

当您创建一个数组在大多数编程语言中,语法是这样的:

myArray =阵列(1,1,2,3,5,8);

或者:

int myArray = {1, 1, 2, 3, 5, 8};

或者:

myArray = [1, 1, 2, 3, 5, 8]

在R中,还有一个额外的块:把多个值到一个变量,你需要c()函数,如:

my_vector < - c (1, 1, 2, 3, 5, 8)

如果你忘了,c,你会得到一个错误。当你开始在R,你可能会看到错误与遗漏,c()。(至少我确实。)

现在我强调的重要性,c()函数,我(不情愿地)告诉你,有一个情况下你可以离开,如果你指的是连续值范围最小值和最大值之间用冒号,像这样:

my_vector < - (1:10)

我把这个异常,因为我遇到风格相当R教程和文本,它可以令人困惑的看一些所需的c多个值,而不是其他人的。请注意,它不会伤害任何使用c执行搜索的范围,不过,即使它不是必需的,如:

my_vector < - c (1:10)

一个很重要的c()函数:它假设向量的东西都是相同的数据类型——也就是说,所有数字或字符。如果您创建了一个向量,例如:

my_vector < - c(1, 4,“你好”,真的)

你不会有一个向量有两个整数对象,一个字符对象和一个逻辑对象。相反,c()将尽其所能把它们转换成相同的对象类型,在本例中所有字符的对象。所以my_vector将包含“1”,“4”、“你好”和“真正的”。换句话说,c()也是“转换”或“强迫”。

与多个对象类型创建一个集合,你需要一个列表,而不是一个向量。您创建了一个列表的列表()函数,而不是c(),如:

My_list < -列表(1,4,“你好”,真的)

现在你已经有了一个变量,1号,4号,角色对象“hello”和真正的逻辑对象。

Loopless循环

遍历一个集合的数据与“对”和“时”这样的循环是许多编程语言的基石。不过,这不是R的方式。当R确实有对,和重复循环,你就更有可能看到操作应用于数据收集使用apply()函数或通过使用plyr()附加包功能。

但首先,一些基础知识。

如果你有一个向量的数字如:

my_vector < - c(5) 7日,9日23日

说,你想要每个乘以0.01将他们转化为百分比,你会怎么做?你不需要一个,foreach或while循环。相反,您可以创建一个新的向量称为my_pct_vectors是这样的:

my_pct_vector < - my_vector * 0.01

执行数学运算在一个向量变量将自动循环中的每一项向量。

通常在数据分析中,不过,你想应用功能子集的数据:发现平均工资职称或社区属性值的标准偏差。apply()函数组和plyr附加包设计。

有超过六个功能应用家族,这取决于类型的数据对象采取行动并返回什么样的数据对象。“这些功能有时会令人沮丧的困难完全按照期望的工作,尤其是对新来者R,”说博客在革命的分析,其重点是企业级的R。

普通应用()函数运行在一个二维矩阵的每一行或每一列所有列都是相同的数据类型。对于一个二维矩阵,你也需要告诉这个函数是否应用行或列:参数1添加到申请行或应用2列。例如:

应用(my_matrix 1位数)

返回的每一行中值my_matrix和

应用(my_matrix 2位数)

计算每一列的值。

其他功能在应用()的家庭如拉普()或tapply()处理不同的输入/输出数据类型。澳大利亚统计bioinformatician Neal fw桑德斯也不错简要介绍适用于R在一篇博客文章中如果你想了解更多,看一些例子。(如果你想知道,生物信息学问题涉及存储、检索和组织生物数据,不仅分析。)

很多R用户不喜欢的应用功能不转向for循环,而是安装plyr包由哈德利韦翰。他用他所谓的“split-apply-combine”模型处理数据:分手的集合数据按你所希望的方式来操作,任何你想要的功能适用于你的每一个数据组(s),然后把它们一起回来了。

plyr包可能是一个超越这个基本的初学者的指南;但是如果你想了解更多关于plyr,你可以去韦翰plyr网站。还有一个plyr有用的幻灯片以PDF格式从Cosma Shalizi,统计在卡内基梅隆大学,副教授和文森特Vu。另一个PDF介绍plyr来自一个介绍R车间爱荷华州立大学。

R简单数据类型(简短)

你应该了解R的所有数据类型和他们马上的行为,作为一个初学者吗?如果你的目标是成为一个R忍者,是的,你必须知道的来龙去脉数据类型。但是我的假设是,你在这里尝试生成快速情节和统计之前创建复杂的代码。

所以,从最基本的开始,这就是我建议你记住现在:R有多个数据类型。其中一些基本数据工作时尤为重要。和一些非常有用的函数做基础数据工作需要在一个特定的数据类型和结构。

更具体地说,R”是一个整数或字符或真/假吗?”数据类型,基本构建块。R有几个其中包括整数,数字,字符和逻辑。缺失值是由南(如果一个数学函数不会正常工作)或NA(缺失或不可用)。

如前一节中所述,你可以有一个向量与多个相同类型的元素,如:

1、5、7

“比尔”、“Bob”、“苏”

一个数字或字符串也是一个向量,向量的1。当你访问一个变量的值有一个值,如73或了解更多关于R在Computerworld.com网站上,“你也会看到这个控制台之前的值:

[1]

这是告诉你,你的屏幕打印从向量项目编号。如果你有一个向量的值,所以打印运行多个行,每一行将开始与一些在括号中,告诉你这向量项目编号,从特定的线。(请参阅下面的屏幕截图,)。

如果你有一个向量的值,所以打印运行多个行,每一行将开始与一些在括号中,告诉你这向量项目编号,从特定的线。

如果你想把数字和字符串或数字和真/假类型,你需要一个列表。(如果你不创建一个列表,你可以非常不满,变量包含(3 8“小”)变成一个向量的字符(“3”,“8”,“小”))。

顺便说一下,3.0 R假设3是相同的类——数字(即。,一个小数点)。如果你想要整3,你需要表示它3 l或as.integer()函数。的情形,这对你很重要,你可以检查什么类型的数量通过使用类()函数:

类(3)

类(3.0)

类(3 l)

类(as.integer (3))

有几个()函数,将一种数据类型转换为另一种,包括as.character (), as.list()和as.data.frame ()。

R还拥有特殊的向量和列表类型的特殊利益团体在分析数据时,如矩阵和数据帧。一个矩阵行和列;你可以找到一个矩阵维度与昏暗的()等

暗(my_matrix)

一个矩阵需要都是一样的在每一列的数据类型,如数字无处不在。

数据帧就像矩阵除了一列可以从另一个列有不同的数据类型,和每一列必须有一个名字。如果你有数据的格式,可能工作以及数据库表(或格式良好的电子表格),它还将可能作为R数据帧。

在一个数据帧,你能想到的每一行类似于数据库记录和每一列像一个数据库字段。有很多有用的功能可以应用于数据帧,其中一些我之前已经在部分,如总结()和心理包的描述()。

说到怪癖:这里有几种方法来找到一个对象的基本数据类型,但不是所有的人都返回相同的值。例如,类()和str()将返回data.frame数据帧对象,但模式()返回更通用的列表。

如果你想了解更详细的数据类型在R,你可以看这个视频讲座由罗杰•彭生物统计学副教授约翰霍普金斯大学彭博公共卫生学院的:

罗杰·彭生物统计学副教授约翰霍普金斯大学彭博公共卫生学院的解释数据类型在R。

一个有用的概念总结本节——挂在那里,我们几乎做:因素。这些代表类别的数据。所以,如果你有一个数据帧与员工,部门和他们的工资,工资是数值数据和员工是字符(字符串在许多其他语言);但您可能希望部门是一个因素——换句话说,一个类别您可能想组或你的数据模型。因素可以是无序的,如部门或命令,如“穷”、“公平”、“好”和“优秀”。

R命令行不同于Unix shell

当你开始在R工作环境,它看起来非常类似于Unix shell。事实上,一些R命令行操作像你期望如果你来自一个Unix环境中,但也有人不喜欢。

想通过你的最后几个命令周期吗?向上箭头键在R正如它在Unix中,不停的按之前的命令。

列表功能,ls(),会给你一个列表,但不像在Unix的文件。相反,它将提供一个列表的对象在当前会话。

希望看到你的当前工作目录吗?pwd只是抛出一个错误;你想要的是getwd ()。

rm (my_variable)将删除从您的当前会话变量。

R是包含一个类unix grep()函数。更多使用grep R,看到这个简短的那样正则表达式与R语言在regular-expressions.info。

终止你的R表达式

R不需要分号结束一行代码(尽管它可以将多个命令放在一行由分号分隔,你不经常看到)。相反,使用换行符(即R。时,新行字符)来确定一个表达式已经结束。

如果你想要一个表达式去跨越多个行吗?R解释器试图猜你的意思是,继续下一行:如果你显然还没有完成一个命令在一行上,它会假设你想继续而不是抛出一个错误。开放一些括号不关闭它们,使用一个开放的报价没有关闭一个或最后一个与经营者+或- R将等待执行你的命令,直到遇到预期结束字符和命令,否则看起来完成。

在R语法作弊:运行SQL查询

如果你有SQL经验和R语法开始给你头痛,特别是当你试图找出如何让数据通过适当的R语法的一个子集——你可能会渴望能够运行一个快速的SQL SELECT命令查询您的数据集。

你可以。

相关:
12 第1页
第1页的2
工资调查:结果是在