有人能给我解释一下.I返回数据行数的正确用法吗.桌子

我有这样的数据:

require(data.table)
DT <- data.table(X=c(5, 15, 20, 25, 30))
DT
#     X
# 1:  5
# 2: 15
# 3: 20
# 4: 25
# 5: 30

我想返回一个行索引向量,其中i中的条件是TRUE,例如,哪些行的X大于20.

DT[X > 20]
# rows 4 & 5 are greater than 20

为了获取索引,我try :

DT[X > 20, .I]
# [1] 1 2 

...但很明显,我做得不对,因为这只会返回一个向量,其中包含返回行数的1.(我觉得.N差不多就是为了这个?).

抱歉,如果这看起来非常基本,但我能在数据中找到所有.表格文档是.I.N的功能,而不是如何使用它们.

推荐答案

如果你想要的只是行号,而不是行本身,那么使用which = TRUEnot.I.

DT[X > 20, which = TRUE]
# [1] 4 5

通过这种方式,您可以获得优化i的好处,例如快速连接或使用自动索引.which = TRUE让它只带着行号提前返回.

下面是数据内部which参数的手动输入.表:

TRUE返回i匹配的x的行号.如果是NA,返回


说明:

注意,在DT[i = .., j = .., by = ..]中,.Ii = ..参数之间有一个特定的关系

### Lets create some sample data
set.seed(1)
LL <- sample(LETTERS[1:5], 20, TRUE)
DT <- data.table(X=LL)

look at the difference between subsetting the whole table, and subsetting just .I

DT[X == "B", .I]
# [1] 1 2 3 4 5 6

DT[  , .I[X == "B"] ]
# [1]  1  2  5 11 14 19

R相关问答推荐

rvest函数read_html_live()不允许html_elements()正确读取

使用scale_x_continuous复制ggplot 2中的离散x轴

在ggplot的注释表格中突出显示最大值

变量计算按R中的行更改

在ggplot Likert条中添加水平线

如何删除gggvenn与gggplot绘制的空白?

条形图和在Ploly中悬停的问题

为什么我的基准测试会随着样本量的增加而出现一些波动?

多个模拟序列间的一种预测回归关系

plotly hover文本/工具提示在shiny 中不起作用

仅在R中的数据集开始和结束时删除所有 Select 列的具有NA的行

在多页PDF中以特定布局排列的绘图列表不起作用

调换行/列并将第一行(原始数据帧的第一列)提升为标题的Tidyr类似功能?

在gggraph中显示来自不同数据帧的单个值

'使用`purrr::pwalk`从嵌套的嵌套框架中的列表列保存ggplots时出现未使用的参数错误

将统计检验添加到GGPUBR中的盒图,在R

减少雨云面之间的间距并绘制所有统计数据点

如何根据未知数的多列排除重复行

判断函数未加载R中的库

在使用SliderInput In Shiny(R)设置输入数据的子集时,保留一些情节痕迹