gpt4 book ai didi

r - 动态分配/引用 data.table 中的列名(在 i、j 和 by 中)

转载 作者:行者123 更新时间:2023-12-03 18:36:38 25 4
gpt4 key购买 nike

A) 而不是这个(其中 cars <- data.table(cars) )

cars[ , .(`Totals:`=.N), by=speed]  

我需要这个
strColumnName <- "Totals:"
cars [ , strColumnName = .N, by=speed]

怎么做?

B)类似(更一般的情况) - 而不是这个:
cars[ dist > 50, .(`Totals:`=.N, x=dist*100), by=speed] 

我需要这个:
strFactor <- "dist"
cars[ strFactor > 50, .(`Totals:`=.N, x=strFactor*100), by=speed]

这个问题是关于在 data.table 中分配/引用列名变量的一般方法,即在“j”(RHS 和 LHS)以及“i”和“by”中 - 动态。当在代码中的其他地方选择时这是必需的(例如,用户我在 Shiny 的应用程序中输入它们)

C) 涉及 i,j 和 by 的一般情况 - 而不是这样:
 cars[ dist > 50, .(`Totals x Factor: ` = .N * dist), by=speed] 

我需要这个:
strFactor <- "dist"; 
strNewVariable <- "Totals x Factor: "
strBy <- "speed"
cars[ strFactor > 50, .(strNewVariable = .N * strFactor), by=strBy]

最佳答案

编辑:
根据您的说明,这里有一种使用 setNamesget 的方法。这里的技巧是 .. 指示在调用环境中进行评估。

library(data.table)
cars <- data.table(cars)
strFactor <- "dist"
strNewVariable <- "Totals x Factor: "
strBy <- "speed"
cars[ get(strFactor) > 50,
setNames(.(.N * get(..strFactor)),strNewVariable),
by=strBy]

关于r - 动态分配/引用 data.table 中的列名(在 i、j 和 by 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60818053/

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