gpt4 book ai didi

r - 如何以编程方式在data.table中选择列?

转载 作者:行者123 更新时间:2023-12-03 23:26:31 25 4
gpt4 key购买 nike

我有以下data.table(DT):

DT <- data.table(V1 = 1:3, V2 = 4:6, V3 = 7:9)


我想通过使用存储相关变量名称的对象,以编程方式(动态)选择变量的子集。例如,我要选择存储在变量“ keep”中的两列“ V1”和“ V3”

keep <- c("V1", "V3")


如果我们要从data.frame中选择“ keep”列,则可以进行以下操作:

DT[keep]


不幸的是,当这是一个data.table时,这不起作用。我以为data.frame和data.table与这种行为相同,但显然不一样。有人能够建议正确的语法吗?

最佳答案

这在FAQ 1.1, 1.2 and 2.17中涵盖。

一些可能性:

DT[, keep, with = FALSE]
DT[, c('V1', 'V3'), with = FALSE]
DT[, c(1, 3), with = FALSE]
DT[, list(V1, V3)]


DF[c('V1','V3')]适用于 data.frame的原因已在 ?`[.data.frame`中介绍


数据帧可以用几种模式编制索引。使用 [[[
使用单个矢量索引( x[i]x[[i]]),它们为数据帧编制索引
好像它是一个列表。在这种用法中, drop参数将被忽略,并带有
警告。




data.table 1.10.2中,以编程方式对列进行子设置时,可以使用 ..前缀:


j是前缀为 ..的符号时,将在调用范围中查找该符号,并将其值用作列名或数字[...],这是实验性的。


从而:

DT[ , ..keep]
# V1 V3
# 1: 1 7
# 2: 2 8
# 3: 3 9

关于r - 如何以编程方式在data.table中选择列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16213620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com