【问题标题】:Option to limit displayed length of text strings in data.tables限制 data.tables 中显示的文本字符串长度的选项
【发布时间】:2017-03-09 21:11:12
【问题描述】:

data.tables 中的某些列的内容可能很长(nchar(.) 很大)。这有时会使检查 R 中的整个 data.table 变得困难,因为它会在宽列之后中断。同时可能仍然需要存储在宽列中的信息,因此简单地按照DT[, long_strings := substr(long_strings, 1, max_length)] 的方式做一些事情并不是一个好的解决方案。

因此,是否有一个选项可以控制文本的显示长度,从而使 data.table 中的文本列显示得比它们更密集?

【问题讨论】:

  • 你冷试DT[, lapply(.SD, substr, 1, 5)] 例如,如果你只想打印而不实际修改内容。您还可以使用.SDcols 来指定character 列。 GH 上还有一个关于print.data.table 的问题,欢迎您向github.com/Rdatatable/data.table/issues/1523 投稿

标签: r data.table options


【解决方案1】:

你可以在 dt 表中使用 javasript

datatable(df, options = list(scrollX = TRUE, columnDefs = list(list(
          targets = "_all",render = JS(
            "function(data, type, row, meta) {",
            "return type === 'display' && data.length > 70 ?",
            "'<span title=\"' + data + '\">' + data.substr(0, 70) + '...</span>' : data;",
            "}")
        )))))

df 是你的数据框。 此代码限制为 70 个字符

希望有帮助 =)

【讨论】:

    【解决方案2】:
    # create some data
    library("data.table")
    out <- NULL
    a <- (round(runif(20,1,50)))
    for(z in 1:length(a)){
      b <- paste(sample(c(letters[], rep(" ", 5)), a[z], replace = T), collapse="")
      out <- c(out, b)
    }
    
    DT = data.table(x=out, y=c(1,3), v=1:10)
    
    # notice that its difficult to maintain an overview
    DT
    
    # a way to see only the first 5 characters of all elements 
    View(as.data.frame(substr(as.matrix(DT), 1,5)))
    

    【讨论】:

    • 这如何回答这个问题?
    • 我想我们正在寻找一种方法来控制表格的显示长度。
    • data.table
    • 你可以这样做DT[, lapply(.SD, substr, 1, 5)]
    猜你喜欢
    • 2010-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-09
    • 1970-01-01
    • 2011-04-19
    相关资源
    最近更新 更多