Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R能有多懒?例如,根据下游操作将文件的一部分懒洋洋地读入R 简介:_R_Data.table_Dplyr - Fatal编程技术网

R能有多懒?例如,根据下游操作将文件的一部分懒洋洋地读入R 简介:

R能有多懒?例如,根据下游操作将文件的一部分懒洋洋地读入R 简介:,r,data.table,dplyr,R,Data.table,Dplyr,我试图了解R的懒惰是否有限制。如中所示,独立于实现的墙是什么。下面我用了一个很有用的例子 设置场景: 我经常有平面文件(1E9到1E11行),比如示例文件file.txt: "chr\tstart\tend\nchr1\t1\t2\nchr1\t2\t3\nchr2\t3\t4\nchr2\t1\t2\nchr3\t2\t3\nchr3\t3\t4\n" i、 e 但对于真实文件,我通常会立即对内容进行采样和/或过滤(有时是为了性能,有时是因为分析只针对观察结果的一部分) 继续使用file.t

我试图了解
R
的懒惰是否有限制。如中所示,独立于实现的墙是什么。下面我用了一个很有用的例子

设置场景: 我经常有平面文件(1E9到1E11行),比如示例文件
file.txt

"chr\tstart\tend\nchr1\t1\t2\nchr1\t2\t3\nchr2\t3\t4\nchr2\t1\t2\nchr3\t2\t3\nchr3\t3\t4\n"
i、 e

但对于真实文件,我通常会立即对内容进行采样和/或过滤(有时是为了性能,有时是因为分析只针对观察结果的一部分)

继续使用
file.txt
我可以用
dplyr
的方式:

library(dplyr)
df <- readr::read_tsv("file.txt") %>% sample_n(3)
df2 <- readr::read_tsv("file.txt") %>% filter(chr == "chr2")
df3 <- readr::read_tsv("file.txt") %>% group_by(chr) %>% sample_n(1)
库(dplyr)
df%样本(3)
df2%过滤器(chr==“chr2”)
df3%分组依据(chr)%>%样本(1)

或者等效地使用
数据。表
dt是否可能?是的,我认为是这样(但不是不涉及C级代码)。是否有任何实施?据我所知没有。使用其他工具(例如SQL)很容易,实现也不简单。
R
如何知道给定的文本行是否符合下游标准,而不先阅读该行?您是否需要一个过滤器应用程序,该应用程序可能会将一行读取到一个临时对象中,并对其进行测试,并且仅在满足条件时将该对象复制到输出数组中(然后将新行读取到该对象中)?
library(dplyr)
df <- readr::read_tsv("file.txt") %>% sample_n(3)
df2 <- readr::read_tsv("file.txt") %>% filter(chr == "chr2")
df3 <- readr::read_tsv("file.txt") %>% group_by(chr) %>% sample_n(1)