我在R中有一个data.table,我想扔掉前n行和后n行。我想先进行一些过滤,然后截断结果。我知道我可以这样:

example=data.table(row1=seq(1,1000,1),row2=seq(2, 3000,3))
e2=example[row1%%2==0]
e2[100:(nrow(e2)-100)]

是否可以在一线之内做到这一点?我想到了类似的东西:
example[row1%%2==0][100:-100]

这当然是行不通的,但是有没有不需要其他变量的更简单的解决方案?

最佳答案

在这种情况下,您知道存在的一列(row1)的名称,因此使用length(<any column>)返回未命名的临时data.table中的行数:

example=data.table(row1=seq(1,1000,1),row2=seq(2, 3000,3))

e2=example[row1%%2==0]
ans1 = e2[100:(nrow(e2)-100)]

ans2 = example[row1%%2==0][100:(length(row1)-100)]

identical(ans1,ans2)
[1] TRUE

关于r - 丢掉前n行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10110616/

10-12 19:09