我正在尝试为不熟悉R的人创建一些非常用户友好的代码.代码的设计使得逻辑标准可以根据用户的需求轻松操作.因此,我不想强迫用户在if语句中工作,而是想创建一个包含代码顶部逻辑语句的字符变量(即x <- "a > 2").
然后我想使用包含逻辑运算符的字符变量来评估if语句.这是基本的想法:
a <- 3
x <- "a > 2"
if(x)TRUE
Run Code Online (Sandbox Code Playgroud)
这显然会返回一个错误,该参数不能被解释为逻辑错误,因为它将x视为字符串"a> 2".
我知道我可以做到:
a <- 3
x <- as.logical(a > 2)
if(x)TRUE
Run Code Online (Sandbox Code Playgroud)
但是,在我正在处理的情况下,最好将这些逻辑语句初始存储为字符.并且as.logical()似乎无法转换字符(即as.logical("a > 2"))不起作用.
我的问题:是否有一些我可以放x的函数允许R不将其视为字符,而是作为逻辑语句?换句话说,我怎样才能剥离引号,以便逻辑语句可以在if语句中工作?
我试图使用twitteR的searchTwitter()函数与curl代理,但我得到一个与JSON相关的错误.我看到很多人都遇到了同样的JSON错误.但我相信我的事业是不同的,所以我会在我的问题中尝试具体.
我已经使用Twitter的API正确设置了OAuth连接.我在Windows上,使用最新版本的R和所有软件包.我使用代理是因为我公司的防火墙.我RCurlOptions用来配置代理.我还带了RJSONIO.当我不必配置代理时,代码在我公司的防火墙之外运行良好.
library(RCurl)
library(twitteR)
library(RJSONIO)
options(RCurlOptions = list(
proxy ="proxy.mycompany.net:8080",
proxyuserpwd="USERNAME:PASSWORD",
cainfo = system.file("CurlSSL", "cacert.pem", package = "RCurl")))
load("OAuth.RData") #Load in my OAuth credentials object
registerTwitterOAuth(cred)
geico.tweets <- searchTwitter('@geico', n = 2)
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
Error in twFromJSON(out) :
Error: Malformed response from server, was not JSON.
Run Code Online (Sandbox Code Playgroud)
我知道这不是Twitter返回R无法正确解析的字符的问题,因为我甚至无法引入任何单个推文(另外,它在防火墙之外工作正常).
此链接表明它可能是由于我使用RCurl引起的:https://github.com/omegahat/RCurl/issues/1
他的解释是因为我使用了RCurl而导致JSON搞砸了.将\\被转换为\通过R_mapString,这被称为仅如果数据包括Unicode字符.这跟我的理解差不多.他还提到了一个.mapUnicode论点.
RCurlOptions我可以配置一些参数来解决这个问题吗?谢谢.