在python中,你可能会做类似的事情
i = (0, 3, 2)
x = [x+1 for x in range(0,5)]
operator.itemgetter(*i)(x)
Run Code Online (Sandbox Code Playgroud)
得到(1, 4, 3).在(emacs)lisp中,我编写了这个名为extract的函数,它执行类似的操作,
(defun extract (elems seq)
(mapcar (lambda (x) (nth x seq)) elems))
(extract '(0 3 2) (number-sequence 1 5))
Run Code Online (Sandbox Code Playgroud)
但我觉得应该有内置的东西?我所知道的是first, last, rest, nth, car, cdr......走的路是什么?〜提前谢谢〜
我在提交git项目之前运行了一系列命令,所以我把它放在一个bash脚本中.最后我有一个执行提交的块:
if [ -z $1 ]; then git commit -a -m "no message"; else; git commit -a -m $1; fi
Run Code Online (Sandbox Code Playgroud)
期望消息传递给脚本
$ ./dostuff_then_commit "my message"
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我明白了
fatal: Paths with -a does not make sense.
Run Code Online (Sandbox Code Playgroud)
因为$1已定义但消息未正确传递?任何人都可以看到问题和/或提出解决方案吗?谢谢你.
使用pdb.set_trace(),我试图调试一系列表达式,其中j用作索引变量.j = 0不允许的语句,因为j是保留的符号pdb.我怎么能绕过这个?
是否有更好的方法将字符串操作应用于ndarrays而不是迭代它们?我想使用"矢量化"操作,但我只能想到使用map(示例显示)或列表推导.
Arr = numpy.rec.fromrecords(zip(range(5),'as far as i know'.split()),
names='name, strings')
print ''.join(map(lambda x: x[0].upper()+'.',Arr['strings']))
=> A.F.A.I.K.
Run Code Online (Sandbox Code Playgroud)
例如,在R语言中,字符串操作也是矢量化的:
> (string <- unlist(strsplit("as far as i know"," ")))
[1] "as" "far" "as" "i" "know"
> paste(sprintf("%s.",toupper(substr(string,1,1))),collapse="")
[1] "A.F.A.I.K."
Run Code Online (Sandbox Code Playgroud) 我有一个经常崩溃的程序(Zotero),它的SQLite数据库被锁定并且无法访问重启程序使用,除非我重启(我真的想避免).所以这不起作用(使用通用名称db.sqlite代替我的实际文件zotero.sqlite):
sqlite3 db.sqlite
sqlite> .backup main backup.sqlite
Error: database is locked
Run Code Online (Sandbox Code Playgroud)
根据这里的答案,我试过:
echo ".dump" | sqlite3 db.sqlite | sqlite3 db.sqlite2
mv db.sqlite2 db.sqlite
Run Code Online (Sandbox Code Playgroud)
db.sqlite2是0KB所以这显然不起作用.受到另一个线程的启发,我也试过了
echo '.dump' | sqlite3 db.sqlite > db.dump
cat db.dump | sqlite3 db.sqlite2
mv db.sqlite2 db.sqlite
Run Code Online (Sandbox Code Playgroud)
导致db.sqlite2文件大小略小db.sqlite,而Zotero(需要数据库的文件)无法识别其内容.
所以这似乎是一种非常强力的方式,但是有效:
cp -pv db.sqlite db.sqlite2
rm -f db.sqlite
mv db.sqlite2 db.sqlite
Run Code Online (Sandbox Code Playgroud)
我想知道这个解决方案是否有任何缺点,以及为什么在此之前提出其他方法.
我想知道是否可以在ggplot2中创建一组类似的数字,并以某种方式更改数据.例如,我可以创建一个函数来完成这个任务:
plot1 <- function(data) ggplot(data) + geom_line(aes(x,y)) + theme_bw()
plot1(data)
plot1(newdata)
Run Code Online (Sandbox Code Playgroud)
但是有可能以某种方式保存和重用一组组件吗?(显然这不起作用):
g <- geom_line(aes(x,y)) + theme_bw()
ggplot(data) + g
ggplot(newdata) + g
Run Code Online (Sandbox Code Playgroud) 我想创建这样的东西
library(lattice)
splom(~iris[1:4], groups = Species, data = iris,
panel=function(x,y,...) {
panel.abline(0,1)
panel.superpose(x,y,...)
})
library(ggplot2)
library(gridExtra)
library(GGally)
ggpairs(iris,columns=1:4,colour="Species") +
geom_abline(intercept=0,slope=1)
Run Code Online (Sandbox Code Playgroud)
对于该geom_abline元素,我收到错误(“二元运算符的非数字参数”)。
我怎样才能让它发挥作用?
例如,我想使用numpy的isnan功能.我已经加载了pandas库:
import pandas as pd
pd.np.isnan(1) #=> False
Run Code Online (Sandbox Code Playgroud)
这有效,但这有什么不利之处吗?或者我应该写
import pandas as pd
import numpy as np
np.isnan(1) #=> False
Run Code Online (Sandbox Code Playgroud)
什么是好习惯?
我想知道是否有人对OS X上的emacs 23的设置有任何建议.我已经使用Linux/Windows一段时间了,我只打开了很多emacs实例,它们是自包含的 - 例如,我可以在单独的框架中有两个单独的文件,每个文件都有自己的R,Python和/或shell运行.我认为这是不赞成的(?) - 但它保持每个脚本文件的工作目录分开,我喜欢.
我知道在我的.emacs文件中设置(server-start)并调用'emacsclient'而不是'Emacs'现在是首选方式(?)有一些优点.我发现这个线程可以通过Applescript来实现这一点: Emacs 23,OS X,multi-tty和emacsclient
但我想知道这是否是唯一可行的方法 - 当我在OS X上打开两个emacs实例时它会给我错误:
** CFMessagePort: bootstrap_register(): failed 1100 (0x44c) 'Permission denied', port = 0x3803, name = 'org.gnu.Emacs.ServiceProvider'
Run Code Online (Sandbox Code Playgroud)
但打开一个新框架允许我编辑文件.据我所知,对于OS X上的vim,有一个名为'mvim'的东西允许启动多个vim实例,但是对于emacs有类似的东西吗?很抱歉这个冗长的问题 - 总之,我想这些是我想征求你的专业知识的问题:
(1)'emacsclient'是专家的方式,(2)如果不一定,是否有办法在OS X上运行多个emacs 23(不仅仅是帧)实例?
谢谢!
在python-mode中,有一个名为py-execute-region的函数,它将突出显示的代码区域发送到Python缓冲区进行评估.在评估之后,光标位于Python缓冲区中,但我希望它保留在脚本缓冲区中,以便我可以继续生成更多代码.我写了一个简单的建议功能:
(defadvice py-execute-region
(after py-execute-region-other-window activate)
""" After execution, return cursor to script buffer """
(other-window 1)
)
Run Code Online (Sandbox Code Playgroud)
但这根本不起作用.我尝试过其他变种,比如使用'around'而不是'after'; 将变量设置为脚本缓冲区名称,然后弹出缓冲区到该缓冲区和类似的东西.没有成功!我想知道这个机制对某人来说是否显而易见......谢谢!