今天经过相当多的调试后,令我沮丧的是,我发现:
for (i in 1:0) {
print(i)
}
实际上在R中分别打印了1和0,写的时候出现了问题
for (i in 1:nrow(myframe) {
fn(i)
}
如果 nrow(myframe)==0,我打算根本不执行。正确的修正只是:
if (nrow(myvect) != 0) {
for (i in 1:nrow(myframe) {
fn(i)
}
}
或者有没有更合适的方法来做我想要在 R 中做的事情?
最佳答案
您可以使用 seq_along
反而:
vec <- numeric()
length(vec)
#[1] 0
for(i in seq_along(vec)) print(i) # doesn't print anything
vec <- 1:5
for(i in seq_along(vec)) print(i)
#[1] 1
#[1] 2
#[1] 3
#[1] 4
#[1] 5
OP更新后编辑
df <- data.frame(a = numeric(), b = numeric())
> df
#[1] a b
#<0 rows> (or row.names with length 0)
for(i in seq_len(nrow(df))) print(i) # doesn't print anything
df <- data.frame(a = 1:3, b = 5:7)
for(i in seq_len(nrow(df))) print(i)
#[1] 1
#[1] 2
#[1] 3
关于r - 在 R 中遍历数据帧长度的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24917228/