有没有办法在不退出isearch模式的情况下滚动文档?我isearch-allow-scroll设置为t,但这限制了我的滚动范围,以确保当前的isearch匹配在缓冲区中可见.理想情况下,我希望能够使用鼠标滚动滚动,在滚动时突出显示所有isearch匹配.
我知道M-x occur,但很多时候只是能够在isearch模式下滚动会更有效(此外,Mx出现不适合折叠模式).
我一直试图将允许我从ListPlot中提取点的东西放在一起,以便在进一步的计算中使用它们.我目前的方法是使用Locator []选择点.这适用于显示点,但我无法弄清楚如何从头部Dynamic []的构造中提取数值.以下是一个独立的示例.通过拖动灰色定位器,您应该能够选择点(由粉红色定位器指示并存储在q两个元素的列表中).这是情节下面的第二行.现在我想将q [[2]]传递给一个函数,或者只是简单地显示它.但是,Mathematica将q头视为单个实体Dynamic,因此第二部分是不可能的(因此错误信息).任何人都可以阐明如何转换q成常规列表?
EuclideanDistanceMod[p1_List, p2_List, fac_: {1, 1}] /;
Length[p1] == Length[p2] :=
Plus @@ (fac.MapThread[Abs[#1 - #2]^2 &, {p1, p2}]) // Sqrt;
test1 = {{1.`, 6.340196001221532`}, {1.`,
13.78779876355869`}, {1.045`, 6.2634018978377295`}, {1.045`,
13.754947081416544`}, {1.09`, 6.178367702583522`}, {1.09`,
13.72055251752498`}, {1.135`, 1.8183153704413153`}, {1.135`,
6.082497198000075`}, {1.135`, 13.684582525399742`}, {1.18`,
1.6809452373465104`}, {1.18`, 5.971583107298081`}, {1.18`,
13.646996905469383`}, {1.225`, 1.9480537697339537`}, {1.225`,
5.838386922625636`}, {1.225`, 13.607746407088161`}, {1.27`,
2.1183174369679234`}, {1.27`, 5.669799095595362`}, {1.27`,
13.566771130126131`}, {1.315`, 2.2572975468163463`}, {1.315`,
5.444014254828522`}, {1.315`, 13.523998701347882`}, {1.36`,
2.380307009155079`}, {1.36`, 5.153024664297602`}, …Run Code Online (Sandbox Code Playgroud) 我正在尝试在ListLogLogPlot上自定义格式标签.通过搜索Mathgroup存档,看起来混乱使用刻度标签的常用方法是使用AbsoluteOptions自定义格式运行替换规则,然后使用该Ticks->{...}选项将它们显式地提供给绘图函数.但是,以下内容对ListLogLogPlot不起作用:
foo = ListLogLogPlot[Range[20]^3, Frame -> True];
ticks=(FrameTicks /. AbsoluteOptions[foo, FrameTicks])
Run Code Online (Sandbox Code Playgroud)
关于如何处理这个问题的任何想法?
编辑:这里有很多好的答案!接受Wizard先生,因为它被证明是解决眼前问题的最简洁方法,但我发现自己使用了将来建议的其他方法.
假设我在一个没有访问文件的缓冲区中输入一堆文本(它可能是一个新的org2blog帖子,或者只是一些临时缓冲区).是否有可能将其自动保存在某处以防万一发生灾难并且Emacs死亡?
我正在绘制一个简单的数据直方图,例如10%.我想在y轴上计数,但由于数据是采样的,我希望它们适当缩放.如果我使用基本图形,我会做类似的事情
foo <- rnorm(50)
foo.hist <- hist(foo,plot=F)
foo.hist$counts <- foo.hist$counts * 10
plot(foo.hist)
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法可以用ggplot2实现这个目的?..有各种各样的"罐头"y轴转换(scale_y_log()等); 有更通用的东西吗?
对于那些熟练掌握R评估器如何处理函数调用的细节,这里有一点益智.假设我想编写一个带有R语句的函数,与我在命令行中编写的语句相同,并回显它和评估结果.例:
> p.eval(sum(1:3))
sum(1:3) --> 6
Run Code Online (Sandbox Code Playgroud)
这很简单; 这是定义p.eval():
p.eval <- function(v,prefix="--> ") {
cmd <- deparse(substitute(v)); cat(cmd,prefix,v,"\n")
}
Run Code Online (Sandbox Code Playgroud)
但是假设我现在想要在p.eval周围编写一个包装器,以相同的方式调用; 也许作为一个有点疯狂的二元运算符与虚拟的第二个参数:
%PE% <- function(x,...) p.eval(x)
Run Code Online (Sandbox Code Playgroud)
我想像这样调用它:sum(1:3) %PE% 0应该等同于旧的p.eval(sum(1:3)).这是不行的,当然,这是因为deparse(substitute())中p.eval()现在给x.
对于开明的问题:有没有办法按照我的意愿使这项工作?对于这种特殊用法,我%PE%通过复制/粘贴单行定义来定义p.eval,所以这个问题主要是学术性的.也许我会了解R评估员的细节:)
PS:为什么可能会发现上述函数有用?假设我开发了一些分析代码并通过org-babel以非交互方式调用它(如果你是一个组织模式和/或一个Emacs用户,这绝对值得一试) ).默认情况下,org-babel会在解释器中评估事物时啜饮输出.因此,如果我想获得除原始数字之外的任何内容,我必须明确地构建要通过cat或打印的字符串paste,但是当他们飞行分析时谁想要这样做?...上面的hack允许您简单地追加%PE在您想要打印的行之后的%0,这会将命令回显到组织输出.
Mathematica的优势之一是它对象的一致底层表示.因此,要改变绘图的属性而不重做用于生成它的计算,我可以做类似的事情
Replace[myplot, {Graphics[x_List, y_List] :>
Graphics[x,Flatten[{y,
BaseStyle -> {FontFamily -> Helvetica, FontSize -> 20}}]]}]
Run Code Online (Sandbox Code Playgroud)
不幸的是,每次我想使用这种方法修改绘图以改变线条,点,字体等的样式/颜色时,我必须通过反复试验找出适当的替换规则是什么,否定任何通过不必重新计算绘制的数据而获得的效率.这是另一个例子:
myplot = Plot[{Cos[x], Sin[x]}, {x, 0, 2 Pi},
PlotStyle -> {{Red, Dashing[None]}, {Green, Dashing[None]}}]
myplot /. { {x___, PatternSequence[Red, Dashing[_]], y___}
-> {x, Green, Thickness[.02], Dashing[Tiny], y},
{x___, Green, y___}
-> {x, Thickness[Large], Red, y} }
Run Code Online (Sandbox Code Playgroud)
这可以完成工作(改变线条颜色/划线/厚度),但似乎是伏都教.
是否有任何文档(指南或教程) - 缺少对图形对象和基元的确切规范的研究 - 这可以指导我构建适当的替换?如果没有,是否有更好的方法来调整图的外观没有重新计算(除了在变量中保存数据和使用ListPlot)?
我想完成以下内容:在评估输入单元格时,它应该自毁(即删除自身).我试图一起砍东西SelectionMove和NotebookDelete,但并没有完全得到我想要的东西.
以下是潜在的用例:
该命令可能是一系列其他命令的简写,这些命令将动态生成并插入笔记本中
该命令可能仅用于副作用(例如设置笔记本选项或打开新笔记本); 在评估后将命令留在笔记本中没有任何意义并且会造成混乱
编辑:按照巫师先生的说法,答案是SelectionMove[EvaluationNotebook[], Previous, Cell]; NotebookDelete[];.我不知道为什么以前不适合我.这是一些使用这个习语的代码.
writeAndEval[nb_, boxExpr_] := (NotebookWrite[nb,
CellGroupData[{Cell[BoxData[boxExpr], "Input"]}]];
SelectionMove[nb, Previous, Cell];
SelectionMove[nb, Next, Cell];
SelectionEvaluate[nb]);
addTwoAndTwo[] := Module[{boxExpr},
boxExpr = RowBox[{"2", "+", "2"}];
SelectionMove[EvaluationNotebook[], Previous, Cell];
NotebookDelete[];
writeAndEval[EvaluationNotebook[], boxExpr];
]
Run Code Online (Sandbox Code Playgroud)
现在,运行addTwoAndTwo[]删除原始输入并使其看起来好像您已评估"2 + 2".当然,你可以做各种各样的事情而不必打印到笔记本上.
编辑2:Sasha的抽象非常优雅.如果您对"真实世界"的使用感到好奇,请查看我在" 工具包中的内容"问题中发布的代码:您的Mathematica工具包中有什么?
我发现ECB模式非常有用,因为它增强了Speedbar和良好的代码浏览功能.不幸的是,我也非常依赖赢家模式,这与欧洲央行不相容.即便在我这样做之后M-x ecb-deactivate,所有ECB defuns都会出现加载,并且胜利者命令仍然会引发有关ECB /赢家不兼容的错误.有没有办法删除ECB定义,以便赢家像以前一样工作,没有重启Emacs?
根据API文档以及之前的SO线程,SystemClock.elapsedRealtime()即使设备处于休眠状态,也应该保持准确的时间.这不是我观察到的.
我写了一个简单的时钟,它位于一个while (true)循环中,并根据值的值更新屏幕上的时间SystemClock.elapsedRealtime().如果我同步两个设备上的时钟,例如通过NTP,然后在其中一个设备上开启和关闭屏幕几次,显示的时间将漂移最多+/- 0.7秒.(这仅在手机未连接外部电源时发生,因此睡眠模式可能是此处的罪魁祸首).
这是正常的吗?这是Android中的错误吗?有没有办法通过睡眠/唤醒周期保持~20毫秒的定时精度?
请考虑以下代码:
from collections import deque
import copy
class Foo(deque):
def __init__(self):
super(Foo, self).__init__()
foo = Foo()
foo_copy = copy.deepcopy(foo)
Run Code Online (Sandbox Code Playgroud)
在这里,deepcopy(foo)失败并显示以下消息:
TypeError: __init__() takes exactly 1 argument (3 given)
另一方面,Foo从a list或a 继承的完全相同的代码dict工作得很好.我可以通过__deepcopy__在Foo类中实现我自己的方法来使deepcopy调用工作,但有人能指出我对这里究竟发生了什么的解释吗?为什么deepcopy()不能上Foo,从继承deque,但是当它与其他内置的类继承不会失败?
人们可以通过指定喜欢的事,使未成年人模式mode:flyspell在文件中的局部变量.在我的情况下,我希望我的组织缓冲区(我可以通过一个钩子设置)默认启用flyspell,但是有一些文件我想让它保持关闭状态.
有没有一种简单的方法来做到这一点(短创建将禁用一个新的次要模式flyspell并启用的是使用局部变量)?