gpt4 book ai didi

json - 用 "For Loop"填充矩阵花费的时间太长

转载 作者:行者123 更新时间:2023-12-01 15:19:29 24 4
gpt4 key购买 nike

我正在尝试使用 for 循环创建一个大约 1,000,000 x 5 的数据框,但已经 5 个多小时了,我认为它不会很快完成。我正在使用 rjson 库从一个大的 json 文件中读取数据。谁能帮我更快地填充这个数据框?

library(rjson)

# read in data from json file
file <- "/filename"
c <- file(file, "r")
l <- readLines(c, -1L)
data <- lapply(X=l, fromJSON)

# specify variables that i want from this data set
myvars <- c("url", "time", "userid", "hostid", "title")
newdata <- matrix(data[[1]][myvars], 1, 5, byrow=TRUE)

# here's where it goes wrong
for (i in 2:length(l)) {
newdata <- rbind(newdata, data[[i]][myvars])
}

newestdata <- data.frame(newdata)

最佳答案

这会花费很长时间,因为循环的每次迭代都会创建一个更大的新对象。试试这个:

slice <- function(field, data) unlist(lapply(data, `[[`, field))
data.frame(Map(slice, myvars, list(data)))

这将创建一个 data.frame 并保留您的原始数据类型:字符、数字等(如果重要的话)。将所有内容强制转换为矩阵会将所有内容强制转换为字符类。

关于json - 用 "For Loop"填充矩阵花费的时间太长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21654354/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com