编辑2016年10月:请注意这个问题是在2012年提出的.每个月左右有人添加一个新的答案或评论反驳答案,但这样做没有意义,因为问题可能已经过时(记住,这是Gnome Javascript编写gnome-shell扩展,而不是浏览器的东西,这是非常具体的).
按照我之前关于如何在Javascript中进行子类化的问题,我正在创建一个超类的子类,如下所示:
function inherits(Child,Parent) {
var Tmp = function {};
Tmp.prototype = Parent.prototype;
Child.prototype = new Tmp();
Child.prototype.constructor = Child;
}
/* Define subclass */
function Subclass() {
Superclass.apply(this,arguments);
/* other initialisation */
}
/* Set up inheritance */
inherits(Subclass,Superclass);
/* Add other methods */
Subclass.prototype.method1 = function ... // and so on.
Run Code Online (Sandbox Code Playgroud)
我的问题是,如何使用这种语法在原型上定义一个setter/getter?
我曾经做过:
Subclass.prototype = {
__proto__: Superclass.prototype,
/* other methods here ... */
get myProperty() {
// code. …Run Code Online (Sandbox Code Playgroud) 是否有一些机制可以转换roxygen看到的评论,最好是在进行roxygen-> rd转换之前?
例如,假设我有:
#' My function. Does stuff with numbers.
#'
#' This takes an input `x` and does something with it.
#' @param x a number.
myFunction <- function (x) {
}
Run Code Online (Sandbox Code Playgroud)
现在,假设我想在roxygen解析之前对注释进行一些转换,例如用反引号替换所有实例\code{}.即:
preprocess <- function (txt) {
gsub('`([^ ]+)`', '\\\\code{\\1}', txt)
}
# cat(preprocess('Takes an input `x` and does something with it'.))
# Takes an input \code{x} and does something with it.
Run Code Online (Sandbox Code Playgroud)
我可以preprocess以某种方式进入roxygen,以便它会在之前(或者在这种情况下工作之后)在doclet上运行它吗?roxygen会生成它的文档吗?
我不想在我的.r文件中进行永久性的查找替换.正如你可能从我的例子中猜到的那样,我的目标是在我的roxygen评论中提供一些基本的降价支持,因此希望保留我的.r文件以保持可读性(并以\code{..}编程方式插入内容).
如果我只是写我自己的版本roxygenise,运行preprocess …
假设我有一个数据帧:
hist <- data.frame(date=Sys.Date() + 0:13,
counts=1:14)
Run Code Online (Sandbox Code Playgroud)
我想用工作日绘制总计数,使用一条线连接点.以下是每个值的要点:
hist <- transform(hist, weekday=factor(weekdays(date),
levels=c('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday')))
ggplot(hist, aes(x=weekday, y=counts)) + geom_point(stat='summary', fun.y=sum)
Run Code Online (Sandbox Code Playgroud)
当我尝试用line(geom_line())连接它们时,ggplot抱怨每组只有一个数据观察,因此无法在这些点之间画一条线.
我理解这一点 - 它试图为每个工作日绘制一条线(因子级别).
我怎样才能让ggplot假装(仅限于该行的目的)工作日是数字?也许我必须有另一个列day_of_week,星期一是0,星期二是1,等等?
语言:R.问题:我可以为menu(..,graphics=T)函数指定固定宽度字体吗?
我最近问了这个问题,关于如何让用户以交互方式选择一行数据框:
df <- data.frame(a=c(9,10),b=c('hello','bananas'))
df.text <- apply( df, 1, paste, collapse=" | " )
menu(df.text,graphics=T)
Run Code Online (Sandbox Code Playgroud)

我想|排队.他们现在不在; 很公平,我没有填充相同宽度的列.所以我format用来使每一列都达到相同的宽度(稍后我会编写代码来自动确定每列的宽度,但是现在让我们忽略它):
df.padded <- apply(df,2,format,width=8)
df.padded.text <- apply( df.padded, 1, paste, collapse=" | ")
menu( df.padded.text,graphics=T )
Run Code Online (Sandbox Code Playgroud)

看看它如何仍然不稳定?然而,如果我看一下df.padded,我得到:
> df.padded
a b
[1,] " 9 " "hello "
[2,] "10 " "bananas "
Run Code Online (Sandbox Code Playgroud)
所以每个单元格肯定都填充到相同的长度.
原因可能是因为它的默认字体(在我的系统上,无论如何,Linux)不是固定宽度.
所以我的问题是:
我可以为menu(..,graphics=T)函数指定固定宽度字体吗?
@RichieCotton注意到,如果你看一下menu用graphics=T它调用select.list,进而调用tcltk::tk_select.list.
所以看起来我必须为此修改tcltk选项.来自@jverzani: …
数据框是可见的,没有任何错误.但是当使用包XLSX的write.xlsx函数打印相同时,它会给出错误.
Error in .jcall(cell, "V", "setCellValue", value) :
method setCellValue with signature ([D)V not found.
Run Code Online (Sandbox Code Playgroud)
data.frame的输入看起来像:
Timestamp qs pqs logqs es p_imp dep r_dep agg_rtn
(time) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl)
1 2015-05-04 09:29:59 0.05788732 0.0007478696 0.0007478545 0.09633803 -0.0446830986 3533.518 274079.9 -0.0006432937
2 2015-05-04 10:00:00 0.04948394 0.0006362707 0.0006362707 0.07586009 0.0088016055 2416.431 187953.1 0.0000000000
3 2015-05-04 10:30:00 0.05554795 0.0007142532 0.0007142532 0.06417808 -0.0002739726 3245.574 252422.0 0.0000000000
4 2015-05-04 10:59:59 0.04863014 0.0006194244 0.0006194244 0.08434442 0.0024951076 3563.401 279503.9 0.0000000000
5 2015-05-04 …Run Code Online (Sandbox Code Playgroud) 我正在使用View以下方法查看R中的数据框:
my_df <- data.frame(a=1:10, b=letters[1:10])
View(my_df)
Run Code Online (Sandbox Code Playgroud)
我现在想以编程方式关闭生成的窗口(而不是单击X按钮).
我怎么能这样做?graphics.off不起作用,因为它不是图形设备.看View代码,内部函数dataviewer用于显示窗口,但我不确定它在后台使用了什么(tcltk?)所以我不知道如何关闭窗口.
重新评论我为什么要这样做.
我基本上在脚本中执行用户检查步骤,询问用户是否将数据帧的片段和相应的图像放在一起.它是这样的:
for (i in 1:heaps) {
1. View(a snippet of a big dataframe)
2. show an image
3. readline('Is this OK? [Y/N]: ') (store the i for which it's not OK)
4. close the image window (graphics.off()), close the View(..) window.
}
Run Code Online (Sandbox Code Playgroud)
我基本上想要减少用户交互,盯着图像和数据帧片段并键入Y或N,这样他们就不必手动关闭i循环中的每个数据帧窗口.
(我正在通过这个验证自己处理并正在处理200个View(snippet)窗口,我没有打扰关闭D:.另外,注意到窗口的打开窃取键盘焦点远离提示,所以我键入Y/N并不像我想的那么快.但我只需要这样做一次,所以它现在就做了.我很好奇这个问题的答案,但下次还是这样.
当我对文档进行purl/tangle以将R块提取到脚本中时,有什么方法可以:
eval=F(或者我可以定义一个chunk hook/option include=F)?例如,假设我有以下Rmd:
```{r setup, echo=F}
library(MASS)
```
First, we perform the setup (assume for some reason I need to evaluate `setup`
silently before I wish to display the chunk to the user, hence the repetition)
```{r setup, eval=F}
```
Here's the function I've been explaining:
```{r function}
plus <- function (a, b) a + b
```
And here's an example of its use:
```{r example}
plus(1, 2)
```
Run Code Online (Sandbox Code Playgroud)
纠结的脚本看起来像这样:
## @knitr setup, echo=F …Run Code Online (Sandbox Code Playgroud) 我正在编写一个程序,它需要一些纬度/经度,并且我将它们内部转换为UTM,以便以米为单位进行一些计算.
纬度/长度点的范围非常小 - 约200米x 200米.它们几乎总是可以依赖于单个UTM区域(除非你不幸并且跨越区域的边界).
但是,纬度/长度所在的区域不受限制.有一天,这个项目可能会针对澳大利亚的人们运行(哦,甚至一个州还有多少个区域,以及这已经导致我多少痛苦......),以及墨西哥人民的另一天.
我的问题是 - 有没有办法确定特定长/纬度所在的区域,以便它可以被送入转换库(我目前使用proj4和R包rgdal).
我的语言是R,但答案不一定是 - 也许只是一个简单的计算,或者我可以将系统调用嵌入到projexectuable中.
干杯.
如何将文件的每一行填充到一定的宽度(比如63个字符宽),如果需要填充空格?
现在,让我们假设所有行都保证少于63个字符.
我使用vim,并希望有一种方法在那里(有某种printf %63s current_line命令?),我可以选择我想要应用填充的行.
但是,我当然愿意使用sed,awk或某种linux工具来完成这项工作.
干杯.
是否可以初始化一个将保持字符串的numpy重新排列,而不事先知道字符串的长度?
作为一个(人为的)例子:
mydf = np.empty( (numrows,), dtype=[ ('file_name','STRING'), ('file_size_MB',float) ] )
Run Code Online (Sandbox Code Playgroud)
问题是我在用信息填充之前构建我的recarray,我不一定知道file_name提前的最大长度.
我的所有尝试都会导致字符串字段被截断:
>>> mydf = np.empty( (2,), dtype=[('file_name',str),('file_size_mb',float)] )
>>> mydf['file_name'][0]='foobarasdf.tif'
>>> mydf['file_name'][1]='arghtidlsarbda.jpg'
>>> mydf
array([('', 6.9164002347457e-310), ('', 9.9413127e-317)],
dtype=[('file_name', 'S'), ('file_size_mb', '<f8')])
>>> mydf['file_name']
array(['f', 'a'],
dtype='|S1')
Run Code Online (Sandbox Code Playgroud)
(顺便说mydf['file_name']一句,为什么显示'f'和'a'同时mydf显示''和''?)
同样,如果我用型(比如说)初始化|S10为file_name这种事情会在长度10截断.
我能找到的唯一类似的问题就是这个问题,但是这会先验地计算出合适的字符串长度,因此与我的字符串长度并不完全相同(因为我事先并不知道).
除了初始化file_name(例如)|S9999999999999(即一些荒谬的上限)之外,还有其他选择吗?