小编ben*_*dae的帖子

我应该使用 mget()、.. 还是 with=FALSE 来选择 data.table 的列?

多种方法可以通过使用保存所需列名(with=FALSE..mget、 ...)的变量来选择 data.table 的列。

是否就使用哪个(何时)达成共识?一个data.table比其他的多-y 吗?

我可以提出以下论点:

  1. with=FALSE并且..几乎同样快,而mget速度较慢
  2. ..无法“即时”选择连接的列名(编辑:当前的 CRAN 版本1.12.8绝对可以,我使用的是旧版本,不能,所以这个论点是有缺陷的)
  3. mget()接近于的有用语法get(),这似乎是在 j 的计算中使用变量名称的唯一方法

至 (1):

library(data.table)
library(microbenchmark)

a <- mtcars
setDT(a)

selected_cols <- names(a)[1:4]

microbenchmark(a[, mget(selected_cols)],
               a[, selected_cols, with = FALSE],
               a[, ..selected_cols],
               a[, .SD, .SDcols = selected_cols])

#Unit: microseconds
#                             expr     min       lq     mean   median       uq      max neval cld
#          a[, mget(selected_cols)] 468.483 495.6455 …
Run Code Online (Sandbox Code Playgroud)

r data.table

16
推荐指数
1
解决办法
476
查看次数

有光泽的selectInput取决于已验证的反应式不会传递验证错误

我试图validate在R Shiny中使用,以防止在不应该显示输出时显示它们。当reactiveinput内部创建验证时使用验证,uiOutput并且验证引发错误时,该错误不会传递给依赖项reactiveoutput

阅读https://shiny.rstudio.com/articles/validation.html并使用时reactlog,我认为问题出在生成的内容上,input而不取决于经过验证的反应性。该文章指出:

闪亮的将:将验证错误传递给依赖它的任何反应式表达式或观察者对象

我不确定真正input内部是uiOutput 什么,但我怀疑它既不是反应性表达也不是观察者。

考虑以下示例:

library(shiny)
library(data.table)

cars <- data.table(mtcars, keep.rownames = T )
setnames(cars, "rn", "name")

ui <- fluidPage(
  selectInput("cyl", "Cyl", c(4, 12)),
  uiOutput("uiOutCars"),
  h4("Filtered Table"),
  tableOutput("filteredTable")
)

server <- function(input, output, session) {

  availableCars <- reactive({
    choices <- cars[cyl == input$cyl, name]
    validate(need(try(length(choices) > 0),
                  "No cars with this cyl!"))
    choices

  }) …
Run Code Online (Sandbox Code Playgroud)

validation r shiny

6
推荐指数
1
解决办法
212
查看次数

非设备联接一步将范围表的所有列添加到data.table中

我确定我忽略了显而易见的内容,但是我找不到一种方法可以一步一步地data.table非查找联接中的“ lookup”表的所有列联接在一起

我看了Arun的演示文稿(https://github.com/Rdatatable/data.table/wiki/talks/ArunSrinivasanSatRdaysBudapest2016.pdf)和多个SO问题,但几乎所有问题都只涉及更新单个列,而不涉及多个列。

假设我有2个data.tables ab

library(data.table)
a <- data.table(Company_ID = c(1,1,1,1),
            salary = c(2000, 3000, 4000, 5000))

#   Company_ID salary
# 1:          1   2000
# 2:          1   3000
# 3:          1   4000
# 4:          1   5000

b <- data.table(cat = c(1,2),
            LB = c(0, 3000),
            UB = c(3000,5000),
            rep = c("Bob","Alice"))

#    cat   LB   UB   rep
# 1:   1    0 3000   Bob
# 2:   2 3000 5000 Alice
Run Code Online (Sandbox Code Playgroud)

我最终想要的是将cat,LB,UB,rep(在中的所有cols …

join r data.table

3
推荐指数
1
解决办法
236
查看次数

标签 统计

r ×3

data.table ×2

join ×1

shiny ×1

validation ×1