如果您正在阅读有关 20 世纪 90 年代图形学发展的新闻,您可能会关注 Jim Blinn 在IEEE 计算机图形与应用中的专栏“Jim Blinn 的角落”。1997 年夏天,您可能会在名为“浮点技巧”的专栏中打开您的问题。所有的技巧都基于 Blinn 从微软的两位老手 Steve Gabriel 和 Gideon Yuval 那里传授的以下知识:
\n“如果只处理正数,则将浮点数的位模式解释为整数,给出对数函数的分段线性近似”
\n我的问题是,浮点数是什么导致了这个特性?
\n\n// These will result in undefined behavior\n// and are not the \'right\' way to do this\n// but I am following Blinn 1997 here\nint AsInteger(float f) {\n return * ( int * ) &f;\n}\n\nfloat AsFloat(int i) {\n return * ( float * ) &i;\n}\n\n// FISR demonstrating the logaritmic …Run Code Online (Sandbox Code Playgroud) 我正在寻找下载一个gzip压缩的csv并将其作为R对象加载而不先将其保存到磁盘.我可以使用压缩文件执行此操作,但似乎无法使用gzfile或使用它gzcon.
例:
grabRemote <- function(url) {
temp <- tempfile()
download.file(url, temp)
aap.file <- read.csv(gzfile(temp), as.is = TRUE)
unlink(temp)
return(aap.file)
}
grabRemote("http://dumps.wikimedia.org/other/articlefeedback/aa_combined-20110321.csv.gz")
Run Code Online (Sandbox Code Playgroud)
下载包含维基百科文章反馈数据的(小)gz压缩文件(不重要,但只是表明它不是巨大的或邪恶的).
我的代码工作正常,但我觉得我错过了一些非常明显的东西,通过创建和销毁临时文件.
我在处理R中的转义unicode字符时遇到了问题,特别是在从MediaWiki API获取信息时遇到的问题.我会找到一个像JSON字符串
{"query":{"categorymembers":[{"ns":0,"title":"Banach\u2013Tarski paradox"}]}}
Run Code Online (Sandbox Code Playgroud)
哪个应该是完全有效的但是当fromJSON()我通过以下方式阅读时:
snip...
[1] "Banach\023Tarski paradox"
Run Code Online (Sandbox Code Playgroud)
起初我以为这只是一个RJSONIO问题,但我遇到类似的问题scan()和readLines().我的猜测是我遗漏了一些非常基本的东西.
我实际上不能仅使用R 来给出完全可重现的示例,因为如果我通过write()(或某些等效函数)将"em\u2013dash"发送到文件,则R将自动转换为em破折号.所以这里.使用以下命令创建名为test1的文本文件:
"em\u2013dash" "em–dash" " em \u2013 dash"
Run Code Online (Sandbox Code Playgroud)
然后加载R(无论文件路径是什么):
> scan( file = "~/R/test1", what = "character", encoding = "UTF-8")
Read 3 items
[1] "em\\u2013dash" "em–dash" " em \\u2013 dash"
> readLines("~/R/test1", warn = FALSE, encoding = "UTF-8")
[1] "\"em\\u2013dash\" \"em–dash\" \" em \\u2013 dash\""
Run Code Online (Sandbox Code Playgroud)
添加的转义字符是导致我的问题的原因fromJSON().我可以把它们剥离出来,但我可能会在这个过程中打破其他东西,我想有一个更简单的解决方案.谢谢.
这是会话信息:
R version 2.14.1 (2011-12-22)
Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit)
locale:
[1] C/en_US.UTF-8/C/C/C/C
attached base packages: …Run Code Online (Sandbox Code Playgroud) 我正在使用psclR中的软件包并尝试使其生成可测试/可重现的结果.我已经看到了在底层的C代码,它看起来好像GetRNGstate()和PutRNGstate()被称为在正确的地方,但它似乎是不可能从MCMC模型重复输出.
我已经simulationResult从SoDA包中打包了函数,因此我可以验证R端的每个模拟R的启动状态.
library(pscl)
library(SoDA)
run1 <- simulationResult(
ideal(s109,
normalize=TRUE,
maxiter = 500,
thin = 10,
burnin = 0),
seed = 42)
run2 <- simulationResult(
ideal(s109,
normalize=TRUE,
maxiter = 500,
thin = 10,
burnin = 0),
seed = 42)
Run Code Online (Sandbox Code Playgroud)
我们可以验证起始状态至少在R方面是相同的:
all.equal(run1@firstState, run2@firstState)
Run Code Online (Sandbox Code Playgroud)
但输出是不同的:
all.equal(run1@result$xbar, run2@result$xbar)
Run Code Online (Sandbox Code Playgroud)
我可以增加迭代次数,但如果RNG状态得到传播则这并不重要.我错过了一些非常简单的事吗?谢谢.
编辑:我还应该注意all.equal(run1@lastState, run2@lastState)(每次运行的结束状态)应该是相同的但它们最终会有所不同.我的猜测是,被C称为R RNG功能外应急的一些源被撞击数的倍那些RNG函数被调用.好奇.
EDIT2
我还应该在OS X 10.8.4上使用pscl 1.04.4添加我的R 3.0.1.
我有一个有点愚蠢的问题.如果我有一个矩阵(或数据框,哪个更容易使用),如:
Year Match
2008 1808
2008 137088
2008 1
2008 56846
2007 2704
2007 169876
2007 75750
2006 2639
2006 193990
2006 2
Run Code Online (Sandbox Code Playgroud)
而且我想总结这些年来的每一场比赛(所以,例如,2008年的比赛是这样的,2008 195743我将如何做到这一点?我脑子里有一些解决方案,但它们都是不必要的复杂和R趋势有一些更简单的解决方案隐藏在某个地方.
您可以使用以下内容生成相同的矩阵:
structure(c(2008L, 2008L, 2008L, 2008L, 2007L, 2007L, 2007L,
2006L, 2006L, 2006L, 1808L, 137088L, 1L, 56846L, 2704L, 169876L,
75750L, 2639L, 193990L, 2L), .Dim = c(10L, 2L), .Dimnames = list(
NULL, c("Year", "Match")))
Run Code Online (Sandbox Code Playgroud)
谢谢你尽你所能的帮助.