我有一个矩阵数据,并希望用热图可视化它.行是物种,所以我想在行旁边显示系统发育树,并根据树重新排列热图的行.我知道heatmapR中的函数可以创建层次聚类热图,但是如何在图中使用我的系统发育聚类而不是默认创建的距离聚类?
假设我想要2个具有指定phi系数的二进制数据向量,我怎么能用R模拟它?
例如,如何可以创建两个矢量等x并y指定矢量长度与COR高效的0.79
> x = c(1, 1, 0, 0, 1, 0, 1, 1, 1)
> y = c(1, 1, 0, 0, 0, 0, 1, 1, 1)
> cor(x,y)
[1] 0.7905694
Run Code Online (Sandbox Code Playgroud) 我正在使用该包parallel进行计算。这是一个玩具示例:
library(parallel)
m = matrix(c(1,1,1,1,0.2,0.2,0.2,0.2), nrow=2)
myFun = function(x) {
if (any(x<0.5)) {
write("less than 0.5", stderr())
return(NA)
} else {
write("good", stdout())
return(mean(x))
}
}
cl = makeCluster(2, outfile="/tmp/output")
parApply(cl, m, 2, myFun)
stopCluster(cl)
Run Code Online (Sandbox Code Playgroud)
问题是 stdout 和 stderr 都将被重定向到/tmp/output. 该output文件如下所示:
starting worker pid=51083 on localhost:11953 at 11:37:12.966
starting worker pid=51093 on localhost:11953 at 11:37:13.261
good
good
less than 0.5
less than 0.5
Run Code Online (Sandbox Code Playgroud)
有没有办法分别为 stdout 和 stderr 设置两个单独的文件?以及如何忽略“starting worker pid=...”的前两行?
我不知道我理解的属性type在defcustom。我可以完美地定义以下变量而不符合type. type在这种情况下的目的是什么?
(defcustom foo 1 "foo" :type 'string)
(defcustom spam "a" "foo" :type 'integer)
Run Code Online (Sandbox Code Playgroud) 我在.emacs文件中使用以下代码来设置默认发布行为.我将org基目录放在差异计算机的不同位置:
;; define machine specific directories storing my org files
(cond ((system-name-is-home) (setq org-dir "/data/org"))
((system-name-is-work) (setq org-dir "~/org")))
Run Code Online (Sandbox Code Playgroud)
因此,我想用一个变量来指定:base-directory,以org-dir代替硬编码的"~/org".我怎样才能做到这一点?
(require 'org-publish)
(setq org-publish-project-alist
'(
("org-notes"
:base-directory "~/org"
:base-extension "org"
:publishing-directory "~/tmp/"
:recursive t
:publishing-function org-publish-org-to-html
:headline-levels 4
:auto-preamble t
:auto-sitemap t ; Generate sitemap.org automagically ...
:sitemap-filename "sitemap.org" ; ... call it sitemap.org (the default) ...
:sitemap-title "Sitemap" ; ... with title 'Sitemap'.
)
("org-static"
:base-directory "~/org"
:base-extension "css\\|js\\|png\\|jpg\\|gif\\|pdf\\|mp3\\|ogg\\|swf"
:publishing-directory "~/tmp/"
:recursive t …Run Code Online (Sandbox Code Playgroud) 我在http://www.ccs.neu.edu/home/shivers/newstyle.html网站上看到了一段代码:
> (defun element-generator ()
(let ((state '(() . (list of elements to be generated)))) ;() sentinel.
(let ((ans (cadr state))) ;pick off the first element
(rplacd state (cddr state)) ;smash the cons
ans)))
ELEMENT-GENERATOR
> (element-generator)
LIST
> (element-generator)
OF
> (element-generator)
ELEMENTS
> (element-generator)
TO
> (element-generator)
BE
> (element-generator)
GENERATED
Run Code Online (Sandbox Code Playgroud)
我不明白该功能如何记住状态.state每次函数运行时都没有重新定义到整个列表?为什么两层let(这是必要的)?如果有人能够解释这个功能是如何工作的,那将不胜感激.
prepared_db我有一个在子模块中调用的函数db.db_1:
from spam import db
submodule_name = "db_1"
func_name = "prepare_db"
func = ...
Run Code Online (Sandbox Code Playgroud)
如何通过上面上下文中的子模块名称和函数名称来获取函数?
更新:
为了回应 @histrio 的答案,我可以验证他的代码适用于os模块。但在这种情况下它不起作用。创建示例:
$ mkdir -p spam/db
$ cat > spam/db/db_1.py
def prepare_db():
print('prepare_db func')
$ touch spam/db/__init__.py
$ PYTHONPATH=$PYTHONPATH:spam
Run Code Online (Sandbox Code Playgroud)
现在,您可以正常导入:
>>> from spam.db.db_1 import prepare_db
>>> prepare_db()
prepare_db func
Run Code Online (Sandbox Code Playgroud)
但如果你动态执行此操作,我会收到此错误:
>>> getattr(getattr(db, submodule_name), func_name)
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-9-1b6aa1216551> in <module>()
----> 1 getattr(getattr(db, submodule_name), func_name)
AttributeError: module 'spam.db.db_1' has no attribute 'prepared_db'
Run Code Online (Sandbox Code Playgroud) 我有 5 个 div 元素(这里以简化的方式)。如何设置 css 以制作 2 列布局,右侧的前 2 个 div 和左侧的其余 div,如图所示(如果需要,每个 div 元素可以用不同的类或 id 标识)?右侧或左侧的 div 数量可以固定并提前知道,而不是动态飞来飞去。两列可能有不同的高度,但它们需要在顶部对齐(即 div3 和 div1 从相同的垂直位置开始)。理想情况下,我不想在每个 div 元素或左列或右列上设置固定高度。
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
Run Code Online (Sandbox Code Playgroud)
例如,我有一个字符串abcdefg. *,如何创建一个[abcdefg\. *]可以匹配字符串中每个字符的正则表达式?问题是可能存在特殊字符,例如.字符串中.
我有3个装饰器,并希望将每个装饰器分别应用于一个函数,以创建该函数的3个不同版本。例如:
@decorator_1
def foo1():
blahblah
@decorator_2
@decorator
def foo2():
blahblah
@decorator_3
def foo3()
blahblah
Run Code Online (Sandbox Code Playgroud)
的内容foo1,foo2并且foo3是完全一样的。问题是我必须将函数写3次。当然,我可以放入blahblah另一个函数spam,并在这三个函数中调用它。但是我仍然必须创建3个单独的函数并调用spam3次。有没有更好的办法来进一步减少这种冗余?