我正在开发一个Python脚本,需要创建大约50个不同的临时文件,这些文件在脚本过程中经常被附加并在最后合并.我确信该tempfile模块可以做我需要的,但我无法弄清楚如何阅读文档.
我想使用临时文件(而不是变量)来节省系统内存,因为这些数据块会随着脚本处理数万个其他文件而变大.
下面的代码块是我正在用于在非临时目录中创建这些文件(非暂时)的hack:
item = (string from another file) # string must id file for future use
tmpfile = 'tmpfiles/' + item
if item not in totalitems:
totalitems.add(item)
with open(tmpfile, 'w') as itemfile:
output = some stuff
tmpfile.write(output)
else:
with open(tmpfile, 'a') as itemfile:
output = different stuff
tmpfile.write(output)
Run Code Online (Sandbox Code Playgroud)
我想我需要的是tempfile.NamedTemporaryFile().根据文件:
可以从文件对象的名称成员中检索该名称.
不幸的是,我不明白这意味着什么.当我在我正在处理的文件中再次运行其相应的"项目"时,我只需要能够稍后再次调用每个文件.我认为这是相当直接的,我只是在密集.如果它很重要,我有Python 2.7.1和3.2.3的这个脚本的版本.我真的只需要一个人或另一个人去工作; 我创造了两个作为学习练习.
我无法让R/KnitR为数字创建LaTeX \label{}语句.该手册似乎表明\label{}将通过将fig.lp中的字符串(默认情况下为"fig:")与R代码块的标签连接来创建语句.但是,我无法让它发挥作用.没有\label{}为通过编织下面的MWE创建的第一个数字创建语句.第二个图是它的标签添加了我刚刚发现的解决方法,将R块放在图形环境中,并将\label标记放在标记之后或之内\caption.
\documentclass[12pt, english, oneside]{amsart}
\begin{document}
Figure \ref{fig:plot} doesn't have it's label.
<<plot>>=
plot(x=0, y=0)
@
Figure \ref{fig:plot2} has its label.
\begin{figure}
\caption{\label{fig:plot2}}
<<>>=
plot(x=1,y=1)
@
\end{figure}
\end{document}
Run Code Online (Sandbox Code Playgroud)
好的,我通过将R块\begin{figure} . . .\end{figure}放在LaTeX 的环境中找到了解决方法.我可以在同一个环境中创建标签.不过,我想了解Yihui打算如何处理KnitR.
我有一个用sys.stdout.write()和创建输出的脚本sys.stderr.write().最近我发布了一些关于脚本其他方面的问题,我注意到发布答案的人似乎更喜欢print('some text', file=sys.stdout).我对输出的主要关注只是它可以被shell传送到文件或作为另一个程序的输入.有人可以解释(或指导我现有的解释)两者之间的差异,print()以及sys.stdout.write每个应该使用的情况和这些惯例的合理性吗?
我通过我的Mac上的ssh连接在NetBSD系统上工作,我想使用该screen实用程序,以便我可以启动进程并在终端连接中断后返回它们.当我输入时,screen我收到错误消息:
Cannot find termcap entry for 'xterm-256color'
Run Code Online (Sandbox Code Playgroud)
浏览论坛帖子后,我认为它与远程机器上的termcap有关,但似乎并非如此; 我可以从另一台计算机的ssh会话中启动屏幕而没有任何错误,我通常无法访问该计算机.这表明我需要在本地计算机上配置一些东西,但我无法弄清楚是什么或如何.虽然这篇文章被标记为"gnu-screen"但我怀疑我正在使用Berkeley屏幕,尽管我不知道这是否是一个重要的区别.
我有一个数据框,其中为笛卡尔坐标(x,y)指定值(l),如下面的最小工作示例所示.
set.seed(2013)
df <- data.frame( x = rep( 0:1, each=2 ),
y = rep( 0:1, 2),
l = rnorm( 4 ))
df
# x y l
# 1 0 0 -0.09202453
# 2 0 1 0.78901912
# 3 1 0 -0.66744232
# 4 1 1 1.36061149
Run Code Online (Sandbox Code Playgroud)
我想使用光栅包创建一个栅格,但是我对文档的阅读并没有透露一种简单的方法,用于将数据加载到栅格单元格中.我想出了几种方法来使用for循环,但我怀疑有一种更直接的方法,我缺少.
我有一个Python3脚本将其输出写入stdout,但是当我将输出传输到head或tail时,它会抱怨.请注意下面的示例输出中它的工作方式,即head返回前两行输出.
> ./script.py '../Testdata/*indels.ss' -m 5 | head -2 ~/Databases/Avian_genomes/Sandbox/combined
xread
2999 50
Traceback (most recent call last):
File "./new.py", line 194, in <module>
sys.stdout.write(lineout)
IOError: [Errno 32] Broken pipe
Exception IOError: IOError(32, 'Broken pipe') in <_io.TextIOWrapper name='<stdout>' mode='w' encoding='UTF-8'> ignored
Run Code Online (Sandbox Code Playgroud)
相比之下,脚本没有问题,其输出通过管道传输到awk,如下所示.
> ./script.py '../Testdata/*indels.ss' -m 5 | awk 'NR < 3 {print $0}' ~/Databases/Avian_genomes/Sandbox/combined
xread
2999 50
Run Code Online (Sandbox Code Playgroud)
如果您需要脚本中的某些代码超出错误消息中包含的内容,请告诉我.我不确定什么是相关的.
我最近和knitr合作,虽然大部分方面都很顺利,但是在完成的文档中包含R代码还有一个格式问题,我还没想到.我经常需要在我的R块中创建相对较长的文本字符串,例如xtable()函数的标题.虽然整洁一般很好地包装R代码并将其保存在LaTeX的阴影框中,但它不知道如何处理文本蜇,因此它不包裹它们,并且它们从右边流出页.
我会非常满意一个整理所有工作的解决方案.但是,我也满意的解决方案,我可以手动应用于我的Rnw源中的R块中的长字符串.我只是不想编辑KnitR创建的tex文件.
下面是一个最小的工作示例.
\documentclass[12pt, english, oneside]{amsart}
\begin{document}
<<setup, include=FALSE, cache=FALSE, tidy=TRUE>>=
options(tidy=TRUE, width=50)
@
<<>>=
x <- c("This","will","wrap","nicely","because","tidy","knows","how","to","deal","with","it.","So","nice","how","it","stays","in","the","box.")
longstr <- "This string will flow off the right side of the page, because tidy doesn't know how to wrap it."
@
\end{document}
Run Code Online (Sandbox Code Playgroud) 我有一个数据框,我想转换为三维数组.数据帧中的一列应作为分组变量,用于将帧拆分为可以组合到阵列中的2d矩阵.在下面的最小工作示例中,数据帧应该由变量"i"分割成矩阵,然后组合成4x4x2数组.该解决方案应该适用于大型数据集,理想情况下可以推广将数据帧转换为维度数组.
# Make reproducible
set.seed(123)
df <- {
data.frame(i=rep(1:2, each=4),
x=rep(rep(0:1, each=2), 2),
y=rep(rep(0:1, 2), 2),
l=rnorm(8))
}
df
# i x y l
# 1 1 0 0 -0.56047565
# 2 1 0 1 -0.23017749
# 3 1 1 0 1.55870831
# 4 1 1 1 0.07050839
# 5 2 0 0 0.12928774
# 6 2 0 1 1.71506499
# 7 2 1 0 0.46091621
# 8 2 1 1 -1.26506123
Run Code Online (Sandbox Code Playgroud)
注意:我怀疑Hadley Wickham的plyr可能会提供所需的工具,也许是大胆的?
我make在我的Mac上有两个问题:一个关于安装第二种make风味的问题,另一个关于如何管理这两种风味.
我需要make在我的Mac上安装BSD ,但我不想删除makeMac上标准的GNU ; 伯克利是一个特殊的项目.尽管安装BSD有广泛的资源,但我还是无法弄清楚从哪里获得以及如何安装该单个程序.做这个的最好方式是什么?
我想我需要把它放进去,/usr/local/bin而make由Mac OS开发工具提供的GNU 将保留在原来的位置/bin.然后我可以管理使用别名调用哪个make.我还是一个*nix新手; 这是一个合理的策略还是有更好的方法?
有没有办法为使用KnitR的R生成的数字指定字幕的位置?我希望有一些功能上等同于xtable()的caption.placement选项.
下面提供了一个最小的工作示例.
\documentclass[12pt, english, oneside]{amsart}
\begin{document}
The caption for Figure \ref{fig:plot} is placed below the figure. Could we place it above, instead?
<<plot, echo=FALSE, fig.cap="Default caption placement is below the figure.">>=
plot(x=0, y=0)
@
\end{document}
Run Code Online (Sandbox Code Playgroud)