小编FG7*_*FG7的帖子

R data.table:在文件夹中的所有 .csv 文件上使用 fread 跳过每个文件的最后一行

我有数百个 .csv 文件需要使用 fread 读取并另存为一个数据表。每个 .csv 的基本结构都相同。有需要跳过的标题信息(使用 skip = 很容易)。我很难跳过每个 .csv 文件的最后一行。每个 .csv 文件都有不同的行数。

如果我在 Test 文件夹中只有一个文件,这个脚本会完美地跳过第一行(使用 skip = )和最后一行(使用 nrows = ):

file <- list.files("Q:/Test/", full.names=TRUE)
all <- fread(file, skip = 7, select = c(1:7,9),
             nrows = length(readLines(file))-9)
Run Code Online (Sandbox Code Playgroud)

在 Test 文件夹中保存多个文件时,这是我尝试的代码:

file <- list.files("Q:/Test/", full.names=TRUE)
L <- lapply(file, fread, skip = 7, select = c(1:7,9),
        nrows = length(readLines(file))-9)
dt <- rbindlist(L)
Run Code Online (Sandbox Code Playgroud)

它不会创建 L 并给我这个错误:

Error in file(con, "r") : invalid 'description' argument
Run Code Online (Sandbox Code Playgroud)

关于如何在每个 .csv 的行数不同时跳过每个 .csv 的最后一行的任何想法?

我正在使用 data.table …

r data.table

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

使用R,data.table,条件求和列

我有一个类似于此的数据表(除了它有150列和大约500万行):

set.seed(1)
dt <- data.table(ID=1:10, Status=c(rep("OUT",2),rep("IN",2),"ON",rep("OUT",2),rep("IN",2),"ON"), 
             t1=round(rnorm(10),1), t2=round(rnorm(10),1), t3=round(rnorm(10),1), 
             t4=round(rnorm(10),1), t5=round(rnorm(10),1), t6=round(rnorm(10),1),
             t7=round(rnorm(10),1),t8=round(rnorm(10),1))
Run Code Online (Sandbox Code Playgroud)

哪个输出:

    ID Status   t1   t2   t3   t4   t5   t6   t7   t8
 1:  1    OUT -0.6  1.5  0.9  1.4 -0.2  0.4  2.4  0.5
 2:  2    OUT  0.2  0.4  0.8 -0.1 -0.3 -0.6  0.0 -0.7
 3:  3     IN -0.8 -0.6  0.1  0.4  0.7  0.3  0.7  0.6
 4:  4     IN  1.6 -2.2 -2.0 -0.1  0.6 -1.1  0.0 -0.9
 5:  5     ON  0.3  1.1  0.6 -1.4 -0.7  1.4 -0.7 -1.3
 6: …
Run Code Online (Sandbox Code Playgroud)

r data.table

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

R,data.table:查找列表的所有组合,排除与自身配对的每个元素

我想有效地找到列表的所有组合,不包括每个元素与其自身的组合.例如,使用A,B,C,D列表查找除AA,BB,CC,DD之外的所有组合.

我可以使用这段代码看起来效率低下:

x <- c("A","B","C","D")
dt <- CJ(x,x)
dt <- dt[!V1==V2]
Run Code Online (Sandbox Code Playgroud)

问题是第三行的运行时间大约是第二行的4倍.因此,对于像我的真实数据这样的大型列表,第2行和第3行可能需要很长时间.

我在Windows 7上使用data.table 1.9.6,R 3.2.2和R Studio.

非常感谢.

performance r data.table

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

即使函数内部的循环是为什么我的函数也不能正常工作

我写了这个函数:

calculate_percentage = function(x){
  for (i in 1:length(x)) {
    x[i] = x[i]*100/x[length(x)]
    return(x)
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,当我将此功能应用于任何矢量时,它将不起作用。载体保持不变。但是,函数本身内部的循环可以正常工作。有人可以向我解释吗?

loops r function

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

标签 统计

r ×4

data.table ×3

function ×1

loops ×1

performance ×1