读取大型矩阵数据文件的特定行

用户名

假设我有一个巨大的m * n矩阵X(太大了,无法读到内存中)和V具有length的二进制数值向量m我的目标是通过诸如(但不一定等于的包X将对应于V等于1(而不是对应于V[i] == 0的行读入专用的data table/中仅适用于对应的行matrixbigmemoryffV[i] == 1

这可以通过黑客入侵nrows来完成skipread.table但是我正在寻找bigmemoryff等。由于RAM不足而导致的类型解决方案。

这是MWE,无法反映我的真实人数X

X <- array(rnorm(100*5),dim=c(100,5))
write.csv(X,"target.csv")
V <- sample(c(rep(1,50),rep(0,50))) #Only want to read in half the rows corresponding to 1's
rm(X)

#Now ... How to read "target.csv"?
西蒙·奥汉隆

如何使用命令行工具sed,构造一个沿您要在命令中读取的行传递的命令。我不确定对此是否会有命令长度限制...

#  Check the data
head( X )
#           [,1]        [,2]       [,3]       [,4]        [,5]
#[1,]  0.2588798  0.42229528  0.4469073  1.0684309  1.35519389
#[2,]  1.0267562  0.80299223 -0.2768111 -0.7017247 -0.06575137
#[3,]  1.0110365 -0.36998260 -0.8543176  1.6237827 -1.33320291
#[4,]  1.5968757  2.13831188  0.6978655 -0.5697239 -1.53799156
#[5,]  0.1284392  0.55596342  0.6919573  0.6558735 -1.69494827
#[6,] -0.2406540 -0.04807381 -1.1265165 -0.9917737  0.31186670

#  Check V, note row 6 above should be skipped according to this....
head(V)
# [1] 1 1 1 1 1 0

#  Get line numbers we want to read
head( which( V == 1 ) )
# [1] 1 2 3 4 5 7

#  Read the first 5 lines where V == '1' in your example (remembering to include an extra line for the header row, hence the +1 in 'which()')
read.csv( pipe( paste0("sed -n '" , paste0( c( 1 , which( V == 1 )[1:6] + 1 ) , collapse = "p; " ) , "p' C:/Data/target.csv" , collapse = "" ) ) , head=TRUE)

#  X        V1         V2         V3         V4          V5
#1 1 0.2588798  0.4222953  0.4469073  1.0684309  1.35519389
#2 2 1.0267562  0.8029922 -0.2768111 -0.7017247 -0.06575137
#3 3 1.0110365 -0.3699826 -0.8543176  1.6237827 -1.33320291
#4 4 1.5968757  2.1383119  0.6978655 -0.5697239 -1.53799156
#5 5 0.1284392  0.5559634  0.6919573  0.6558735 -1.69494827
#6 7 0.6856038  0.1082029  0.1523561 -1.4147429 -0.64041290

我们实际传递给的命令sed是...

 "sed -n '1p; 2p; 3p; 4p; 5p; 6p; 8p' C:/Data/target.csv"

我们用于-n关闭所有行的打印,然后使用由分号分隔的,我们希望读取的行向量,由which( V == 1 )给定给我们,最后是目标文件名。请记住,这些行号已被偏移+1以说明构成标题行的行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

读取大型矩阵数据文件的特定行

来自分类Dev

从数据文件中选择特定的行

来自分类Dev

如何读取大型csv文件的特定行

来自分类Dev

c-读取数据文件中的特定列

来自分类Dev

在函数中按年份读取特定数据文件

来自分类Dev

读取具有可变大小的行的数据文件

来自分类Dev

读取具有可变大小的行的数据文件

来自分类Dev

如何选择多个数据文件的特定行

来自分类Dev

从数据文件中读取数据点

来自分类Dev

什么是解析大型数据文件最快的文件/方式?

来自分类Dev

PostgreSQL:甚至读取访问更改了数据文件磁盘,从而导致使用pgbackrest进行大型增量备份

来自分类Dev

gnuplot从数据文件列读取线型

来自分类Dev

gnuplot从数据文件列读取线型

来自分类Dev

Weblogic读取元数据文件

来自分类Dev

在C ++中读取“大”数据文件

来自分类Dev

将数据文件读取到Matlab中的矩阵中,每行具有不同的数据量

来自分类Dev

将大型数据文件导入MysQL的最佳方法

来自分类Dev

数据文件中的行均值

来自分类Dev

读取 Avro 文件时不是数据文件错误

来自分类Dev

即使我有超过10GB的可用内存,使用C ++读取大型(〜1GB)数据文件有时也会抛出bad_alloc

来自分类Dev

无法读取Eclipse方面的项目元数据文件

来自分类Dev

读取数据文件作为链表中的节点的功能

来自分类Dev

用Java快速读取大数据文件

来自分类Dev

如何使用GLPK中的坐标读取数据文件

来自分类Dev

使用Matlab可靠地读取列表数据文件

来自分类Dev

无法在TeamCity上的Android上读取Jacoco数据文件

来自分类Dev

在R读取的数据文件中分配列名

来自分类Dev

跳过从数据文件C ++读取字符

来自分类Dev

如何在Python的类中读取数据文件?

Related 相关文章

热门标签

归档