subset(iris, Sepal.Width > 4 & Sepal.Length > 5, select = c(Sepal.Width,Sepal.Length,Species))
我正在检查子集函数,但我认为同样的事情可以更容易实现,所以为什么要记住一个新函数。
所以我编写了下面的代码来复制上面的子集函数
1)
iris["Sepal.Width" > 4 & "Sepal.Length" > 5,c("Sepal.Width", "Sepal.Length","Species")]
但&条件在这里不起作用,当我检查下面的代码并且它起作用
2)
iris[iris$Sepal.Width > 4 & iris$Sepal.Length > 5,c("Sepal.Width", "Sepal.Length","Species")]
请解释
由于
答案 0 :(得分:0)
这是因为您将字符串Sepal.Width
与数字4
进行比较,而不是将同一列的值进行比较。所以这些将永远是TRUE
:
> "Sepal.Width" > 4
[1] TRUE
> "Sepal.Length" > 5
[1] TRUE
所以你是iris[TRUE, c("Sepal.Width", "Sepal.Length","Species")]
,它返回所选列的所有行。我个人更喜欢使用subset
。