在R中使用file()每天将数据流传输到两个文件

在R中使用file()每天将数据流传输到两个文件,r,api,file,twitter,R,Api,File,Twitter,解决方案:将格式(Sys.time(),“%H”)包装为as.numeric时,下面的代码可以工作 我使用streamR从Twitter的流式API中获得了恒定的数据流。我正在使用streamR的代码,streamR是一个处理Twitter流式API数据的包。我希望数据每天进入两个不同的文件。使用下面的代码,我尝试每天将数据流传输到两个不同的文件中(一个在中午12点之后,一个在中午12点之前),但它似乎不起作用。下面是流媒体所需的代码,它是streamR中更大的函数filterStream的一部

解决方案:将格式(Sys.time(),“%H”)包装为as.numeric时,下面的代码可以工作

我使用streamR从Twitter的流式API中获得了恒定的数据流。我正在使用streamR的代码,streamR是一个处理Twitter流式API数据的包。我希望数据每天进入两个不同的文件。使用下面的代码,我尝试每天将数据流传输到两个不同的文件中(一个在中午12点之后,一个在中午12点之前),但它似乎不起作用。下面是流媒体所需的代码,它是streamR中更大的函数filterStream的一部分(整个函数的代码可根据要求提供;我意识到,如果没有API应用程序,这是不容易复制的。)

conn 0){
打开(conn2,open=“a”)
写线(x,conn2,sep=“”)
} 
}
如果(!is.null(oauth)){

除了
格式(Sys.time(),“%H”)
之外,不能解释所有内容的url应该用
包装为.numeric
。或者,如果您对示例部分不完全诚实,它可能是唯一的错误。@flodel,为什么需要包装?这对我来说是正确的:
“13”>12
。因为R会将12转换为“12”和比较字符串。查看
之间的区别。character(0:23)>12
0:23>12
@flodel,非常简单…感谢您的耐心!恐怕我在某些地方使用过这种比较…:-0
格式(Sys.time(),“%H”)
将返回一个字符串:从
“0”
“23”
。所有可能的值都是
as.character(0:23)
。现在请自己看看
as.character(0:23)>=12
不是您想要的。它可能符合您的期望(
0:23>=12
)一些小时的数据,但不是全部。因此需要按照我的建议使用
as.numeric
来修复代码的这一部分。
conn <- file(description = "after12.json")
conn2 <- file(description = "before12.json")

    write.tweets <- function(x) {
      if (nchar(x) > 0 && format(Sys.time(), "%H") >= 12){
        open(conn, open="a")
        writeLines(x, conn, sep = "")
      } else if (nchar(x) > 0) {
        open(conn2, open="a")
        writeLines(x, conn2, sep = "")
      } 
    }

    if (!is.null(oauth)){
        url <- "https://stream.twitter.com/1.1/statuses/filter.json"
        output <- tryCatch(oauth$OAuthRequest(URL=url, params=params, method="POST", 
            customHeader=NULL, timeout = timeout, writefunction = write.tweets, 
            cainfo=system.file("CurlSSL", "cacert.pem", package = "RCurl")), 
                error=function(e) e)
        close(conn)
    }