以"R简介"为例
xc <- split(x, ind)
yc <- split(y, ind)
for (i in 1:length(yc)) {
plot(xc[[i]], yc[[i]])
abline(lsfit(xc[[i]], yc[[i]]))
}
Run Code Online (Sandbox Code Playgroud)
for(i in 1:length(yc)) { ...在您需要当前索引的句柄的情况下,似乎是迭代列表或向量的习惯用法.然而,这在空列表的情况下会中断,因为1:0它不是空向量.当你不能保证非空列表时,我应该用什么成语来迭代列表/向量索引?我在想if(length(yc)) for(i in 1:length(yc)) { ...但是有更好的方法吗?
Aar*_*ica 11
你在找seq_along.
> seq_along(as.list(1:2))
[1] 1 2
> seq_along(list())
integer(0)
Run Code Online (Sandbox Code Playgroud)
你可以使用seq_along:
for(i in seq_along(yc)) {...}
Run Code Online (Sandbox Code Playgroud)
我很确定这会绕过这个问题并且应该更快一点.