【发布时间】:2019-03-04 08:25:32
【问题描述】:
在 R 中,当我在 iris 数据集中输入以下代码时:
iris %>%
filter(Petal.Width == 0.2 & Species == "setosa") %>%
dim()
我明白了
[1] 29 5
我想遍历 Petal.Width = 0.1、0.2、0.3、0.4、0.5 的值并获得 5 个不同的输出。
list1 = list(0.1, 0.2, 0.3, 0.4, 0.5)
for(i in list1){
df_test <- iris %>%
filter(Petal.Width == i & Species == "setosa") %>%
dim()
}
df_test
但是,上面的代码只返回一个输出:
[1] 1 5
为什么会发生这种情况,我怎样才能让它返回 5 个输出?
【问题讨论】:
-
您需要创建一个空列表并在每次迭代时填充它。如果事先知道维度,最好先定义维度。
-
l <- list()在循环外,然后用l[i] <-在里面赋值。 -
df_test每次迭代都会修改,最后你只有最后一个 -
@RLave 创建一个空列表并动态填充它是可能的,但效率不高。最好使用
map(或lapply)。 -
我同意,我只是指出错误。另外我建议最好先定义输出的维度。