Json 迭代地将固定数量的行读入R

Json 迭代地将固定数量的行读入R,json,r,Json,R,我有一个正在使用的josn文件,它在一个文件中包含多个json对象。R无法读取整个文件。但是,由于每个对象都以固定的间隔出现,所以我希望迭代地将固定数量的行读入R 关于将单行读入R有很多问题,但我无法将这些解决方案扩展到固定的行数。对于我的问题,我需要一次将16行读入R(例如1-16、17-32等) 我尝试过使用循环,但似乎无法获得正确的语法: ## File file <- "results.json" ## Create connection con <- file(descr

我有一个正在使用的josn文件,它在一个文件中包含多个json对象。R无法读取整个文件。但是,由于每个对象都以固定的间隔出现,所以我希望迭代地将固定数量的行读入R

关于将单行读入R有很多问题,但我无法将这些解决方案扩展到固定的行数。对于我的问题,我需要一次将16行读入R(例如1-16、17-32等)

我尝试过使用循环,但似乎无法获得正确的语法:

## File
file <- "results.json"

## Create connection
con <- file(description=file, open="r")

## Loop over a file connection
for(i in 1:1000) {
  tmp <- scan(file=con, nlines=16, quiet=TRUE)
  data[i] <- fromJSON(tmp)
}
这可能有助于:

编辑以使其使用列表并缩减为一个文件

## Loop over a file connection
data <- NULL
for(i in 1:1000) {
  tmp <- scan(file=con, nlines=16, skip=(i-1)*16, quiet=TRUE)
  data[[i]] <- fromJSON(tmp)
}
df <- Reduce(function(x, y) {paste(x, y, collapse = " ")})
##在文件连接上循环

数据在@tomtom的启发下,我找到了一个解决方案

## File
file <- "results.json"
## Loop over a file 
for(i in 1:1000) {
  tmp <- paste(scan(file=file, what="character", sep="\n", nlines=16, skip=(i-1)*16, quiet=TRUE),collapse=" ")
  assign(x = paste("data", i, sep = "_"), value = fromJSON(tmp))
}
##文件

您是否在
中尝试过
jsonlite::stream_?这让我很接近,但它创建了一个作为字符向量[1:21]的tmp对象。使用
paste(scan(file=con,what=“character”,sep=“”,nlines=16,skip=(i-1)*16,quiet=TRUE),collapse=“”)
我可以将其转换为单个字符串,但jsonlite无法识别它,因为scan()会从“object”中删除引号
## File
file <- "results.json"
## Loop over a file 
for(i in 1:1000) {
  tmp <- paste(scan(file=file, what="character", sep="\n", nlines=16, skip=(i-1)*16, quiet=TRUE),collapse=" ")
  assign(x = paste("data", i, sep = "_"), value = fromJSON(tmp))
}