我指的是奥斯卡·莱昂(Oscar deLéon)对这个问题的回答:How to add column into a dataframe based on condition?
这是他的代码:
iris$Regulation <- c("DOWN", "UP")[ (iris$Sepal.Length >= 5) + 1 ]
我知道它为“法规”列分配值,因此可以创建它(如果尚不存在)。但是之后?我看到它有效,但我不知道它到底在做什么。您能解释一下它的作用吗?
答案 0 :(得分:1)
第一部分有效地创建了一个具有两个条目的对象:潜在结果DOWN/UP
。第二个是索引其中一个结果的逻辑论证。
如果我们为结果创建一个对象,则可能会更容易:
outcome <- c('DOWN','UP')
方括号为对象编制索引:
> outcome[ 2 ]
[1] "UP"
方括号内是返回FALSE/TRUE
的逻辑语句。仅关注前5个观察值:
> iris[1:5,'Sepal.Length'] >= 5
[1] TRUE FALSE FALSE FALSE TRUE
哪个数字存储为0/1
:
> as.numeric(iris[1:5,'Sepal.Length'] >= 5)
[1] 1 0 0 0 1
在上面加上1将返回1和2,它们在DOWN/UP
对象中索引outcomes
:
> condition[ (iris[1:5,'Sepal.Length'] >= 5) + 1 ]
[1] "UP" "DOWN" "DOWN" "DOWN" "UP"