我想知道是否可以将表达式替换到data.table的i部分.我已经建立了一个深度嵌套的列表,其中包含根据用户在shiny 的应用程序中 Select 的子组执行子设置的预设参数.我怀疑这是不可能的,但我希望以某种方式得到确认.

如果不可能,我欢迎任何替代解决方案的 idea .

基本示例

library(data.table)

dt = data.table(
  y = rep(c('a','b'),5),
  x = 1:10
)

exp1 = "x > 5"

dt[y == "a" & substitute(exp1)]
# Error: operations are possible only for numeric, logical or complex types

推荐答案

我的做法是这样的:

library(data.table)
exp1 = "x > 5" |> str2lang()
(ll <- substitute(
    dt[y == "a" & e1],
    list(
        e1 = exp1
    )
))
eval(ll)

我认为这是一个很好的方法,因为它保持了惯用的data.table的外观.例如,如果您想要dt[y == "a" & x > 5, .(mm = length(x)), by = "y"]:

(ll <- substitute(
    dt[y == "a" & e1, .(mm = f1(e2)), by = e3], # Change right here and maintain data.table's look
    list(
        e1 = exp1,
        # e1 = "x > 5" |> str2lang(),
        e2 = quote(x), # Allow more flexibilities
        e3 = "y", # Allow more flexibilities
        f1 = quote(length) # Allow more flexibilities
    )
))
eval(ll)

它也类似于data.table发展版中提出的substitute2env方法.

R相关问答推荐

使用gggplot 2在R中重新调整面板和y轴文本大小

如何在四进制仪表板值框中显示值(使用shiny 的服务器计算)

编码变量a、b、c以匹配来自另一个数据点的变量x

RStudio中相关数据的分组箱形图

将包含卷的底部25%的组拆分为2行

如何在所有绘图中保持条件值的 colored颜色 相同?

非线性混合效应模型(NLME)预测变量的置信区间

在ggplot中为不同几何体使用不同的 colored颜色 比例

使用Facet_WRAP时更改框图中线的 colored颜色

找出二叉树中每个 node 在R中的深度?

2个Rscript.exe可执行文件有什么区别?

从服务器在Shiny中一起渲染图标和文本

如何在科学记数法中显示因子

R中有约束的优化问题:如何用复数和对数效益函数解决问题?

在使用具有Bray-Curtis相似性的pvCluust时计算p值

在R中使用列表(作为tibble列)进行向量化?

观察器中的inaliateLater的位置

将列表中的字符串粘贴到R中for循环内的dplyr筛选器中

了解nchar在列表上的意外行为

具有某些列的唯一值的数据帧