我目前在 R 中有一个脚本,它循环了大约 2000 次(for循环),并且在每个循环中,它使用 url 链接和read.csv将数据放入变量的函数从数据库中查询数据。
我的问题是:当我查询少量数据(大约 10000 行)时,每个循环大约需要 12 秒,这很好。但是现在我每个循环需要查询大约 50000 行数据,并且查询时间增加了很多,每个循环需要 50 秒左右。这对我来说很好,但有时我注意到服务器发送数据需要更长的时间(?75-90 秒)并且显然连接超时并且我收到这些错误:
文件错误(文件,“rt”):无法打开连接
另外: 警告信息:
在文件(文件,“rt”)中:无法打开:HTTP 状态为“0(无)”
或者这个:
文件错误(文件,“rt”):无法打开连接
另外: 警告信息:
在文件(文件,“rt”)中:InternetOpenUrl 失败:“操作超时”
我不会每次都收到相同的警告,它在这两者之间发生变化。
现在,我想要的是避免我的程序在发生这种情况时停止,或者只是防止此超时错误并告诉 R 等待更多时间来获取数据。我在脚本开始时尝试过这些设置作为可能的解决方案,但它一直在发生。
options(timeout=190)
setInternet2(use=NA)
setInternet2(use=FALSE)
setInternet2(use=NA)
Run Code Online (Sandbox Code Playgroud)
任何其他建议或解决方法?也许在发生这种情况时跳到下一个循环并将此错误发生的循环次数存储在一个变量中,以便最后可以再次查询,但仅限i于循环中由于连接错误而被跳过的那些? 当然,理想的解决方案是避免出现此错误。
我在 Matlab 中从数据库读取数据时遇到一些问题。我用来下载数据的 url 链接给出了一个以分号分隔的文本文件,我需要 Matlab 来识别这些数据并以一种struct格式(因为数据具有不同的类)进行相应的排列(因为数据具有不同的类)。我已经使用urlread并且可以成功下载数据,唯一的问题是我将所有数据作为一个单元格内的字符串获取,我需要将这些数据作为表格获取并且组织良好。
基本上我想知道是否可以像read.csvR 中的函数一样将数据从 url 加载到 Matlab中,您只需将 url 放在文件名应该去的位置并定义数据的分隔方式和中提琴,你让您data.frame的所有数据都井井有条。
我想有办法在使用后解释字符串urlread并将其转换为有组织的struct变量,但必须有一种方法可以像 R 一样直接从 url 读取它。
经过大量思考和谷歌搜索后,我找不到解决问题的方法,希望您能帮助我。
我有一个大数据框,其中一个 ID 列可以重复 2 次以上,一个开始和结束日期列将构成一个时间段。我想知道,按 ID 分组,该 ID 的任何时间段是否与另一个时间段重叠,如果是,则通过创建一个新列来标记它,例如,说明该 ID 是否重叠。
这是一个已经包含所需新列的示例数据框:
structure(list(ID= c(34L, 34L, 80L, 80L, 81L, 81L, 81L, 94L,
94L), Start = structure(c(1072911600, 1262300400, 1157061600,
1277935200, 1157061600, 1277935200, 1157061600, 1075590000, 1285891200
), class = c("POSIXct", "POSIXt"), tzone = ""), End = structure(c(1262214000,
1409436000, 1251669600, 1404079200, 1251669600, 1404079200, 1251669600,
1264892400, 1475193600), class = c("POSIXct", "POSIXt"), tzone = ""),
Overlap = c(FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE,
FALSE, FALSE)), .Names = c("ID", "Start", "End", "Overlap"
), row.names = …Run Code Online (Sandbox Code Playgroud)