小编Gai*_*inz的帖子

有没有比fread()更快的方法来读取大数据?

嗨,首先,我已经在堆栈和Google上搜索了,发现了这样的帖子: 快速读取非常大的表作为数据框。尽管这些内容很有帮助并且得到了很好的回答,但我正在寻找更多信息。

我正在寻找读取/导入高达50-60GB的“大”数据的最佳方法。我目前正在使用中的fread()函数,data.table而该函数是我目前所知道的最快的函数。我正在工作的PC /服务器具有良好的cpu(工作站)和32 GB的RAM,但仍超过10GB的数据(有时接近数十亿的观测值)需要花费大量时间才能读取。

我们已经有sql数据库,但是由于某些原因,我们必须在R中处理大数据。有没有一种方法可以比fread()这样的大文件加速R或更好的选择?

谢谢。

编辑:fread(“ data.txt”,详细= TRUE)

omp_get_max_threads() = 2
omp_get_thread_limit() = 2147483647
DTthreads = 0
RestoreAfterFork = true
Input contains no \n. Taking this to be a filename to open
[01] Check arguments
  Using 2 threads (omp_get_max_threads()=2, nth=2)
  NAstrings = [<<NA>>]
  None of the NAstrings look like numbers.
  show progress = 1
  0/1 column will be read as integer
[02] Opening the file
  Opening file C://somefolder/data.txt
  File opened, size …
Run Code Online (Sandbox Code Playgroud)

r fread bigdata data.table

6
推荐指数
2
解决办法
450
查看次数

如何使用kable将表格调整为pdf页面?

我目前工作的一个降价文件(乳胶),我使用kable()kableExtra我的表。问题是我的一些表格太大,不适合 pdf 页面(即使是横向)。

我试图latex_options = "scale_down"从 kableExtra使用,但由于某些原因它不起作用,它不会改变任何东西。这是我正在运行的代码示例:

kable(dt, "latex", longtable = T, caption = "SampleCaption") %>% 
  add_header_above(c("","Mens" = 3, "Womens" = 3))  %>%  
  kable_styling(latex_options = c("striped", "scale_down", "repeat_header"),repeat_header_text = "",
                full_width = F) %>%
  column_spec(1, width = "10cm")    
Run Code Online (Sandbox Code Playgroud)

我已经看过谷歌和stackoverflow。任何人都知道我做错了什么?谢谢

编辑,这是评论中要求的工作代码:

  kable(dt, "latex", longtable = T, caption = "SampleCaption") %>% 
 add_header_above(c("","Mens" = 3, "Womens" = 3, "Total" = 2))  %>%  
 kable_styling(font_size = 7, latex_options = c("striped", "repeat_header"),repeat_header_text = "",
               full_width = F) %>%
 column_spec(1, width …
Run Code Online (Sandbox Code Playgroud)

r knitr kableextra kable

5
推荐指数
1
解决办法
1678
查看次数

as.character(1)== as.numeric(1)为什么是TRUE?

就像标题说的那样,为什么"1" == 1是TRUE?这背后的真正原因是什么?R是想和善还是其他呢?我一直在想,因为“ 1”(或任何数字,实际上都没有关系)被R读取为字符时,如果与as.numeric(1)或进行比较,它将自动返回FALSE as.integer(1)

> as.character(1) == as.numeric(1)
[1] TRUE
Run Code Online (Sandbox Code Playgroud)

要么

> "1" == 1
[1] TRUE
Run Code Online (Sandbox Code Playgroud)

我想这是一个简单的问题,但我想得到一个答案。谢谢。

r

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

列表中每个元素的 Knitr / kable 标题

我目前必须.pdf使用R Markdown. 我正在使用该knitr包将我的数据帧“转换”为 LaTeX。我通常这样做没有问题,但这次我不太确定如何解决我的问题。

我需要获取列表中每个元素(某些数据框)的标题,以在.pdf文件中显示为标题。

这是我拥有的数据示例:

library(knitr)
library(kableExtra)

df1 <- data.frame(col1 = c(1,2,3), col2 = c("a", "b", "c"))
df2 <- data.frame(col1 = c(6,7,8), col2 = c("d", "e", "f"))
list <- list("df1" = df1, "df2" = df2)

print(list)

$`df1`
  col1 col2
1    1    a
2    2    b
3    3    c

$df2
  col1 col2
1    6    d
2    7    e
3    8    f
Run Code Online (Sandbox Code Playgroud)

我的knitrkableExtra代码:

my_function <- function(list){
    kable(list, "latex", longtable …
Run Code Online (Sandbox Code Playgroud)

r knitr r-markdown kableextra kable

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

基于 R 中的现有列创建多个百分比列

col2我想创建多个列来显示,col3和的每个元素的百分比Total。我想出的代码仅显示paste这些列中的百分比,而不是将其粘贴到新列中。我已经在堆栈和谷歌上搜索过,但没有找到我正在寻找的答案。

样本数据 :

data <- data.table(col1= c("A", "B", "C"),
                   col2= c(43,23,19),
                   col3= c(102,230,149))
data <- data[, Total := col2 + col3]
data <- janitor::adorn_title(data)

Output :

  col1 col2 col3 Total
    A   43  102   145
    B   23  230   253
    C   19  149   168
Total   85  481   566
Run Code Online (Sandbox Code Playgroud)

我的百分比函数:

add_percent <- function(dt, col_no_percent, col_percent){
  dt <- dt[
    , c(.SD[, col_no_percent, with=FALSE],
        lapply(.SD[, col_percent, with=FALSE], function(x){
          paste0(x, format(round(x / sum(x) * 100 * 2, 1), nsmall …
Run Code Online (Sandbox Code Playgroud)

r data.table

0
推荐指数
1
解决办法
328
查看次数

标签 统计

r ×5

data.table ×2

kable ×2

kableextra ×2

knitr ×2

bigdata ×1

fread ×1

r-markdown ×1