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>5
返回FALSE FALSE TRUE TRUE TRUE
,其和为 3,因为有 3 个TRUE
s。它告诉您 x (x[i]>5
?) 的每个值是否满足条件并对响应求和。
x[x>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中的()和[]有啥区别[关闭]的主要内容,如果未能解决你的问题,请参考以下文章