我刚刚开始从Datacap学习R,并被以下函数卡住了:
below_zero <- function(x) {
return(x[x < 0])
}
网站上说,这个功能的作用如下:
我们已经创建了一个函数below_zero((,它接受数值,并返回仅包含这些值的向量严格低于零。
此函数将应用于名为";temp":
[[1]][1]3 7 9 6-1
[[2]][1]6 9 12 13 5
[[3]][1]4 8 3-1-3
[[4]][1]1 4 7 2-2
[[5]][1]5 7 9 4 2
[[6]][1]-3 5 8 9 4
[[7]][1]3 6 9 4 1
但是,我并不能特别理解这一部分:
(x[x<0](
例如,如果x[1]
返回向量中的第一个元素,那么[x < 0]
到底在做什么?
x < 0
返回的是一个逻辑语句还是一个数字?
请解释一下这段代码的作用。
感谢
如果您为示例向量x <- c(-3,-1,1,2)
尝试x < 0
,您将得到TRUE TRUE FALSE FALSE
的结果,因为R会检查x
的每个值,如果它小于0。由于结果是一个逻辑向量,您可以将其用作x
的选择器。一个完整的例子:
x <- c(-3,-1,1,2) # input
y <- x < 0 # logical vector
x[y] # filter
因此,您有两种选择:
- by index:正如您在
x[1]
中提到的,返回第一个值 - 通过过滤
x[x < 0]
,[]
内部的表达式会告诉你某个东西是否包含该表达式,外部表达式根据内部表达式的结果进行过滤