作为 dplyr 过滤功能的一部分,我如何循环遍历列表的元素并最终在 R 中打印方差?
How do I loop through the elements of a list as a part of dplyr's filter capability and eventually print variance in R?
我有一个名为 diamondsData 的数据框,我想以这样的方式操作它,它允许我计算 R 中每种切割类型的克拉大小方差。
我可以轻松地手动完成,如下所示:
diamondsData %>%
filter(cut=="Fair") %>%
select(carat) %>%
var()
我可以将“Fair in filter(cut=="Fair")”更改为 Ideal 等等,但我想自动执行此操作。我尝试创建一个列表并像这样循环:
y <- list("Ideal", "Premium", "Good", "Very Good", "Fair")
for(x in y){
print(
diamondsData %>%
filter(cut==x) %>%
select(carat) %>%
var()
)
}
但这不起作用。这导致:
[
我在 R 中工作。有什么建议吗??
使用group_by而不是循环:
diamondsData %>%
group_by(cut) %>%
select(carat) %>%
summarize(variability = var(carat))
它应该给你一个数据框,其中包含每次切割中克拉的差异。
编辑以将 %>% var()
替换为 %>% summarise(....)
。
问题是 var
需要 vector
而 select
returns 需要 data.frame/tibble
作为输出(即使选择了一列)。我们可以使用 pull
将列作为 vector
for(x in y){
print(
diamondsData %>%
filter(cut==x) %>%
pull(carat) %>%
var(., na.rm = TRUE)
)
}
我有一个名为 diamondsData 的数据框,我想以这样的方式操作它,它允许我计算 R 中每种切割类型的克拉大小方差。
我可以轻松地手动完成,如下所示:
diamondsData %>%
filter(cut=="Fair") %>%
select(carat) %>%
var()
我可以将“Fair in filter(cut=="Fair")”更改为 Ideal 等等,但我想自动执行此操作。我尝试创建一个列表并像这样循环:
y <- list("Ideal", "Premium", "Good", "Very Good", "Fair")
for(x in y){
print(
diamondsData %>%
filter(cut==x) %>%
select(carat) %>%
var()
)
}
但这不起作用。这导致:
[
我在 R 中工作。有什么建议吗??
使用group_by而不是循环:
diamondsData %>%
group_by(cut) %>%
select(carat) %>%
summarize(variability = var(carat))
它应该给你一个数据框,其中包含每次切割中克拉的差异。
编辑以将 %>% var()
替换为 %>% summarise(....)
。
问题是 var
需要 vector
而 select
returns 需要 data.frame/tibble
作为输出(即使选择了一列)。我们可以使用 pull
将列作为 vector
for(x in y){
print(
diamondsData %>%
filter(cut==x) %>%
pull(carat) %>%
var(., na.rm = TRUE)
)
}