使用循环自动化R中的大数据分块
我试图将一个非常大的数据集分解成块。我的代码如下所示:使用循环自动化R中的大数据分块,r,chunking,R,Chunking,我试图将一个非常大的数据集分解成块。我的代码如下所示: #Chunk 1 data <- read.csv("/Users/admin/Desktop/data/sample.csv", header=T, nrow=1000000) write.csv(data, "/Users/admin/Desktop/data/data1.csv") #Chunk 2 data <- read.csv("/Users/admin/Desktop/data/sample.csv", head
#Chunk 1
data <- read.csv("/Users/admin/Desktop/data/sample.csv", header=T, nrow=1000000)
write.csv(data, "/Users/admin/Desktop/data/data1.csv")
#Chunk 2
data <- read.csv("/Users/admin/Desktop/data/sample.csv", header=F, nrow=1000000, skip=1000000)
write.csv(data, "/Users/admin/Desktop/data/data2.csv")
#Chunk 3
data <- read.csv("/Users/admin/Desktop/data/sample.csv", header=F, nrow=1000000, skip=2000000)
write.csv(data, "/Users/admin/Desktop/data/data3.csv")
#块1
数据以下方法如何?为了演示,我创建了一个包含两列和十行的数据帧,并在循环中读取两次,每次读取五行,将结果保存为文本文件:
f<-"C:/Users/MyPC/Desktop/"
for(i in 1:2){
df <- read.table("C:/Users/MyPC/Desktop/df.txt", header=FALSE, nrow=5, skip=5*(i-1))
file <- paste(f,sep="","df",i,".txt")
write.table(df,file)
}
f下面的方法怎么样?为了演示,我创建了一个包含两列和十行的数据帧,并在循环中读取两次,每次读取五行,将结果保存为文本文件:
f<-"C:/Users/MyPC/Desktop/"
for(i in 1:2){
df <- read.table("C:/Users/MyPC/Desktop/df.txt", header=FALSE, nrow=5, skip=5*(i-1))
file <- paste(f,sep="","df",i,".txt")
write.table(df,file)
}
f下面的方法怎么样?为了演示,我创建了一个包含两列和十行的数据帧,并在循环中读取两次,每次读取五行,将结果保存为文本文件:
f<-"C:/Users/MyPC/Desktop/"
for(i in 1:2){
df <- read.table("C:/Users/MyPC/Desktop/df.txt", header=FALSE, nrow=5, skip=5*(i-1))
file <- paste(f,sep="","df",i,".txt")
write.table(df,file)
}
f下面的方法怎么样?为了演示,我创建了一个包含两列和十行的数据帧,并在循环中读取两次,每次读取五行,将结果保存为文本文件:
f<-"C:/Users/MyPC/Desktop/"
for(i in 1:2){
df <- read.table("C:/Users/MyPC/Desktop/df.txt", header=FALSE, nrow=5, skip=5*(i-1))
file <- paste(f,sep="","df",i,".txt")
write.table(df,file)
}
f对上述答案进行了一些改进。使用lappy()代替for循环,使用data.table::fread()代替read.table()
用于环与环的比较
已经有很好的文件证明,如果可能的话,应该使用lappy而不是for循环。一个快速的谷歌搜索将显示大量的论据和例子。Lappy更快,它返回一个列表,而不是一个必须定义列表(或其他存储对象)的列表,并且它可以轻松并行运行,因为循环的每个迭代都是一个独立的函数调用,而不是“顶层”的循环。在这种情况下,切换到Lappy可以节省7秒(这很琐碎,但最好养成好习惯)
read.csv()与data.table::fread()
fread()是read.csv()的一个主要速度改进(我看到了2-5倍的加速,这取决于数据等。这篇文章显示了大约15倍的加速),它被设计用于处理一些管理任务,如猜测分隔符。在这种情况下,将fread()替换为read.csv()时会有15秒的加速
对上面的答案进行了一些改进。使用lappy()代替for循环,使用data.table::fread()代替read.table()
用于环与环的比较
有充分的证据表明,如果可能的话,应该使用Lappy而不是for循环。快速的Google搜索将显示大量的参数和示例。Lappy速度更快,它返回一个列表,而不是必须定义列表(或其他存储对象)的列表,并且它可以很容易地并行运行,因为循环的每个迭代都是一个独立的函数调用,而不是“顶层”的循环。在这种情况下,切换到Lappy可以节省7秒(这很简单,但最好养成良好的习惯)
read.csv()与data.table::fread()
fread()是read.csv()的一个主要速度改进(我看到了2-5倍的加速,这取决于数据等。这篇文章显示了大约15倍的加速),它被设计用于处理一些管理任务,如猜测分隔符。在这种情况下,将fread()替换为read.csv()时会有15秒的加速
对上面的答案进行了一些改进。使用lappy()代替for循环,使用data.table::fread()代替read.table()
用于环与环的比较
有充分的证据表明,如果可能的话,应该使用Lappy而不是for循环。快速的Google搜索将显示大量的参数和示例。Lappy速度更快,它返回一个列表,而不是必须定义列表(或其他存储对象)的列表,并且它可以很容易地并行运行,因为循环的每个迭代都是一个独立的函数调用,而不是“顶层”的循环。在这种情况下,切换到Lappy可以节省7秒(这很简单,但最好养成良好的习惯)
read.csv()与data.table::fread()
fread()是read.csv()的一个主要速度改进(我看到了2-5倍的加速,这取决于数据等。这篇文章显示了大约15倍的加速),它被设计用于处理一些管理任务,如猜测分隔符。在这种情况下,将fread()替换为read.csv()时会有15秒的加速
对上面的答案进行了一些改进。使用lappy()代替for循环,使用data.table::fread()代替read.table()
用于环与环的比较
有充分的证据表明,如果可能的话,应该使用Lappy而不是for循环。快速的Google搜索将显示大量的参数和示例。Lappy速度更快,它返回一个列表,而不是必须定义列表(或其他存储对象)的列表,并且它可以很容易地并行运行,因为循环的每个迭代都是一个独立的函数调用,而不是“顶层”的循环。在这种情况下,切换到Lappy可以节省7秒(这很简单,但最好养成良好的习惯)
read.csv()与data.table::fread()
fread()是read.csv()的一个主要速度改进(我看到了2-5倍的加速,这取决于数据等。这篇文章显示了大约15倍的加速),它被设计用于处理一些管理任务,如猜测分隔符。在这种情况下,将fread()替换为read.csv()时会有15秒的加速
当然:你试过了吗?试过LaF软件包,特别是读它的渐晕图的分块处理部分。当然:你试过了吗?试过LaF软件包,特别是读它的渐晕图的分块处理部分。当然:你试过了吗?试过LaF软件包,特别是读它的渐晕图的分块处理部分。当然:您尝试过吗?尝试LaF软件包,尤其是读取其vignette的分块处理部分。我尝试过您的方法,并收到以下错误消息:type.convert中出错(data[[I]],as.is=as.is[I],dec=dec,na.strings=character(0L)):无效的multiby