我想将列名传递给setkey()除了一两个。 我可以轻松地像下面这样做:

setkey(df, column1, column2, column3, column6, ..., columnN, physical = TRUE)

(请注意,将跳过column4column5 )。

但是它要求我列出除某些特定列之外的所有列名。 我可以获得带有colnames(df)的列列表,但我不确定如何(1)将它传递给setkey()和(2)从该列表中排除一些列?

#1楼 票数:7 已采纳

您可以尝试使用setkeyv ,它可以接受列名的字符向量,然后使用简单的索引。

例如,按位置忽略列

setkeyv(df, names(df)[-(4:5)])

或者通过列名矢量忽略列(与setdiff结合使用)

ignore <- c("column4", "column5")
setkeyv(df, setdiff(names(df), ignore))

  ask by LA_ translate from so

未解决问题?本站智能推荐:

1回复

将列名作为参数传递给 data.table::setkey() --- 有些列不在 data.table 中:col_name

所以,基本上我想要的类似于这两篇文章: 1 , 2 。 但是,当我尝试解决方案时,我不断收到错误消息。 我的问题的不同之处在于我正在使用 data.table 包并试图设置一个键值。 有关更多详细信息,请参阅此处。 现在,举个例子,让我们假设我有一个数据框并设置它的键如下: 这有效。 现在,
1回复

将列作为函数参数传递[重复]

这个问题已经在这里有了答案: 如何在R的data.table中使用变量中的列名完全通用地工作 3个答案 我的df看起来像这样: 我想创建一个函数,该函数用于创建包含平均值的新列的数据表: 然后当我运行该功能 这给了我错误: 我不确定自
1回复

如何将字符串作为参数传递给期望R中的变量的函数

第一次调用函数f有效,第二次调用没有。 如何将字符串(“v”)传递给函数f,以便函数按预期工作?
1回复

在R data.table中,如何将变量参数传递给表达式?

我遇到了一个关于data.table的小R问题。 非常感谢您的帮助。 我该怎么做呢: 我收到以下错误: sum中的错误(v1,na.rm = TRUE):参数的'type'(字符)无效 现在, v1和v2都从其他程序作为字符变量传递,所以我不能这样做v1<-
1回复

如何将fun.aggregate作为参数传递给dcast.data.table?

TL; DR:我怎么能传递fun.aggregate到dcast.data.table时调用dcast.data.table是一个功能(这是我通过内完成fun.aggregate )? 我有这样一张桌子: 我重塑为长格式,保留最后一次出现重复 但是,如果我将dcast.da
1回复

将函数参数传递给data.table i

假设我们有一个data.table 我想创建一个函数 这样,如果 然后 基本上,我想将id[[1]]从执行环境传递给myDT的i参数。 我很难在这里访问正确的环境,正在寻求帮助。 不能更改函数参数的名称。
1回复

将字符参数传递给data.table [关闭]

如何将字符参数传递给data.table? 我尝试过eval但没有帮助:
1回复

将参数传递给data.table聚合函数

我有一个函数来计算变量的加权平均值,并使用data.table聚合语法按时间段对其进行data.table 。 但是,我想以编程方式提供加权列的名称。 有没有办法在仍然使用传统的data.table语法的同时实现这一data.table ? 下面的函数wtmean1演示了我想做什么的想法(