使用循环自动化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