R中的()和[]有啥区别[关闭]

Posted

技术标签:

【中文标题】R中的()和[]有啥区别[关闭]【英文标题】:What's the difference between () and [] in R [closed]R中的()和[]有什么区别[关闭] 【发布时间】:2017-10-03 01:06:51 【问题描述】:
x <- c(2,4,6,8,10)

下面的结果是什么,

sum(x>5) 
sum(x[x>5])

谁能告诉我这到底是什么意思,我是 R 编程新手。

【问题讨论】:

我认为你可以很容易地找到结果 也应该是sum 而不是Sum @moman822 谢谢它是代码编辑但无论如何都没有回答或帮助,请你详细说明 [] 是索引。 sum(x > 5)的意思是把()里面的向量或者元素相加,就是(FALSE FALSE TRUE TRUE TRUE),R把TRUE理解为1,FALSE理解为0。所以结果是3。但是,x[ x>5] 表示在 x 向量中“找到”为“TRUE”的向量,实际上是:x[FALSE FALSE TRUE TRUE TRUE]。由于 [] 用作索引,它只为我们获取 TRUE 的元素,并删除 FALSE 的元素。所以这是总结 x 中为 TRUE 的元素; 6,8,10。所以它变成了 24。 【参考方案1】:

x&gt;5 返回FALSE FALSE TRUE TRUE TRUE,其和为 3,因为有 3 个TRUEs。它告诉您 x (x[i]&gt;5?) 的每个值是否满足条件并对响应求和。

x[x&gt;5] 子集 x 为每个大于 5 的值,返回 6、8 和 10,总和为 24。

【讨论】:

【参考方案2】:

[ 用于根据向量对对象的值进行子集化。有不同的规则取决于您要设置子集的对象的类型。

( 用于指定将传递给函数的参数。在你的情况下,一个总和。

有关大括号的更多信息,请参阅?"("

您的第一个语句将测试 x 中的每个元素并返回它是否为真。这将分别强制为 1 和 0,并求和 (0 + 0 + 0 + 1 + 1 + 1 = 3)。

第二个语句将仅对大于 5 (6 + 8 + 10 = 24) 的元素进行子集化并将它们相加。

【讨论】:

当然(也可以单独作为一个函数使用(只是返回它的参数),比如((function(x,y) invisible(x + y))(1, 2))

以上是关于R中的()和[]有啥区别[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Ruby 中的方法和消息有啥区别? [关闭]

Java中的字符文字'\n'和'\r'有啥区别?

fopen中的r和rb有啥区别

Angular Firestore 查询中的 get() 和 valueChanges() 有啥区别? [关闭]

R中的向量和列表数据类型有啥区别?

AWS CloudWatch 中的指标、日志和事件之间有啥区别? [关闭]