0

我正在使用 R 中包含的 iris 数据集。首先,我从物种列中使用“virginica”和“not virginica”创建了新数据,以便重命名每个不是 virginica 的物种:

data2 <- iris
data2$Species <- factor("virginica",levels=c("virginica","notvirginica"))
data2$Species[iris$Species!="virginica"] <- "notvirginica"

然后,当我尝试在下面的代码中创建一个数据框来代表所有种类的弗吉尼亚州时,我"object of type 'closure' is not subsettable"df(Species == "virginica", ).

virg <- df(df$Species == "virginica",)

我从理论上知道这个错误意味着什么,但我不明白它如何应用于这条线。我尝试将括号更改为方括号并使用iris$Species == "virginica"而不是df$Species == "virginica",但都没有奏效。这是怎么回事?

4

3 回答 3

1

您应该使用这些选项中的任何一个。对于子集,您可以使用[]subset()运行。我不知道df你在哪里data2,而且使用的()子集也不正确:

#Code 1
virg <- data2[data2$Species == "virginica",]
#Code 2
virg <- subset(data2,Species == "virginica")
于 2020-11-19T16:58:21.423 回答
0

您是否考虑过使用filterdplyr中的数据来子集您的数据?由于输入没有被修改,您可以使用virg <- iris %>%.

library(datasets)
library(dplyr)

iris %>% 
  filter(Species == "virginica") %>% 
  head(10)

#>    Sepal.Length Sepal.Width Petal.Length Petal.Width   Species
#> 1           6.3         3.3          6.0         2.5 virginica
#> 2           5.8         2.7          5.1         1.9 virginica
#> 3           7.1         3.0          5.9         2.1 virginica
#> 4           6.3         2.9          5.6         1.8 virginica
#> 5           6.5         3.0          5.8         2.2 virginica
#> 6           7.6         3.0          6.6         2.1 virginica
#> 7           4.9         2.5          4.5         1.7 virginica
#> 8           7.3         2.9          6.3         1.8 virginica
#> 9           6.7         2.5          5.8         1.8 virginica
#> 10          7.2         3.6          6.1         2.5 virginica

reprex 包于 2020-11-19 创建(v0.3.0)

于 2020-11-19T17:13:45.583 回答
0

我们也可以使用%in%

subset(data2, Species %in% "virginica")
于 2020-11-19T22:26:29.620 回答