小编wdk*_*nls的帖子

是否有像switch这样的函数在dplyr :: mutate中运行?

我不能在里面使用switch,mutate因为它返回的是整个向量而不仅仅是行.作为一个黑客,我正在使用:

pick <- function(x, v1, v2, v3, v4) {
    ifelse(x == 1, v1,
           ifelse(x == 2, v2,
                  ifelse(x == 3, v3,
                         ifelse(x == 4, v4, NA))))
}
Run Code Online (Sandbox Code Playgroud)

这在内部工作mutate,现在很好,因为我通常选择4件事,但这可能会改变.你能推荐另一种选择吗?

例如:

library(dplyr)
df.faithful <- tbl_df(faithful)
df.faithful$x  <- sample(1:4, 272, rep=TRUE)
df.faithful$y1 <- rnorm(n=272, mean=7, sd=2)
df.faithful$y2 <- rnorm(n=272, mean=5, sd=2)
df.faithful$y3 <- rnorm(n=272, mean=7, sd=1)
df.faithful$y4 <- rnorm(n=272, mean=5, sd=1)
Run Code Online (Sandbox Code Playgroud)

使用pick:

mutate(df.faithful, y = pick(x, y1, y2, y3, y4))
Source: local data frame [272 x 8] …
Run Code Online (Sandbox Code Playgroud)

r dplyr

19
推荐指数
3
解决办法
5120
查看次数

如何从目录树构建树形图?

给定根绝对目录路径.如何生成其下方所有路径的树状图对象,以便我可以使用R可视化目录树?

假设以下调用返回以下叶节点.

list.files(path, full.names = TRUE, recursive = TRUE)

root/a/some/file.R
root/a/another/file.R
root/a/another/cool/file.R
root/b/some/data.csv
root/b/more/data.csv
Run Code Online (Sandbox Code Playgroud)

我想在R中创建一个类似unix tree程序输出的图:

root
??? a
?   ??? another
?   ?   ??? cool
?   ?   ?   ??? file.R
?   ?   ??? file.R
?   ??? some
?       ??? file.R
??? b
    ??? more
    ?   ??? data.csv
    ??? some
        ??? data.csv
Run Code Online (Sandbox Code Playgroud)

如果解决方案涉及将文件系统树分解为两个,那将特别有用data.frame:

  1. 节点表(我可以使用其包含修改日期等属性)
  2. 和一个边缘表(也有属性)

然后从这两个data.frames 构建树形图对象.

r dendrogram

15
推荐指数
3
解决办法
2349
查看次数

如何将目录添加到C头包含路径?

我在为自己依赖于pcre.h的程序安装依赖项时遇到问题.我把它安装到/ opt/local/include,但C编译器没有看到它,因此给了我:

错误:pcre.h:没有这样的文件或目录

我通过编写一个试图包含它的hello world程序来证实这一点:

#include <pcre.h>
#include <stdio.h>

int main(void)
{
    printf("hello, world\n");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

除非我指定路径,否则这也会产生错误</opt/local/include/pcre.h>.

我希望C编译器默认找到它,但我不知道它在哪里配置.选项卡完成没有显示任何HEADER_PATH环境变量,我找不到类似于XCode的任何类似的东西.然而,我正在使用Mac OSX Snow Leopard来解决这个问题.

c macos

11
推荐指数
2
解决办法
2万
查看次数

在带有Helm的Emacs中创建一个具有类似名称的新文件

我总是打开一个eshell并执行find-file new-file-name,因为helm总是为我提供候选人和一百万个看起来不像我想要的基本功能的选项:强制文件被称为我的文件类型.例如,我想在一个包含另一个org文件的目录中使用名为mto.org的组织文档.

Helm完成而不是让我创建一个新文件:(

如何强制helm创建名为I typed的文件,这样我可以通过避免打开eshell并添加一个小的,但(希望很容易)可以避免我的注意力中断来节省10秒?

emacs emacs-helm

11
推荐指数
1
解决办法
1797
查看次数

字节码:符号作为变量的值为void:org-babel-tangle-lang-exts

我让Emacs工作得很好,然后我重新启动了我的电脑.现在这段代码阻止我加载我的init文件:

(require 'ob-clojure)
(org-babel-do-load-languages
     'org-babel-load-languages
     '((emacs-lisp . nil)
       (R . t)
       (python . t)
       (js . t)
       (scheme . t)
       (C . t)
       (clojure . t)
       (lilypond . t)
       (octave . t)))
Run Code Online (Sandbox Code Playgroud)

我不知道为什么会这样.在我重新开始之前,我已经让巴贝尔与R一起工作.现在我收到消息:

字节码:符号作为变量的值为void:org-babel-tangle-lang-exts

我在目录中提到org-babel的任何内容,只有上面的表达式出现了.再加上我摆脱它时我的其他init文件代码加载的事实让我觉得这个代码就是问题所在.但是为什么org-mode指的是我没有的功能呢?

运行emacs --debug-init给出:

调试器输入 - Lisp错误:( void-function org-babel-do-load-languages)(org-babel-do-load-languages)(引用org-babel-load-languages)(引用(......) ...... ...... ...... ......)))eval-buffer(#load <2 >> nil"/home/kca/.emacs.d/init-org.el"nil t); 读取缓冲区位置3080加载代码转换("/ home/kca/.emacs.d/init-org.el""/ home/kca /.emacs.d/init-org.el"nil nil) load("init-org")eval-buffer(#nil"/home/kca/.emacs.d/init.el"nil t); 读取缓冲区位置1464加载代码转换("/ home/kca/.emacs.d/init.el""/ home/kca /.emacs.d/init.el"tt)加载("/ home /kca/.emacs.d/init"tt)#[nil"\ 205\264

我试图检查是否正在加载正确的组织模式版本:

M-x load-library
org
M-x org-version
=> Org-mode version 7.7
Run Code Online (Sandbox Code Playgroud)

以下是init.el中加载它的代码:

(add-to-list 'load-path (concat conf-dir "org-7.7/lisp")) …
Run Code Online (Sandbox Code Playgroud)

emacs org-mode org-babel

9
推荐指数
1
解决办法
2948
查看次数

在org-mode中使用babel捕获shell命令的输出

我想知道我的网络硬件.

lspci | grep -i net
Run Code Online (Sandbox Code Playgroud)

从终端,此命令提供以下输出:

00:19.0以太网控制器:Intel公司82577LM千兆网络连接(rev 06)02:00.0网络控制器:Intel Corporation Centrino Advanced-N 6200(rev 35)

但是当我尝试从org-mode通过babel源块运行它时,我没有输出.

#+BEGIN_SRC sh
lspci | grep -i net
#+END_SRC

#+RESULTS:
Run Code Online (Sandbox Code Playgroud)

是什么赋予了?如何从终端获得相同的输出?

emacs org-mode org-babel

9
推荐指数
1
解决办法
3002
查看次数

对球拍合同感到困惑

我定义了一个true?与球拍/列表中的计数一起使用的函数.

(define (true? expr)
  (and (boolean? expr) expr #t))
Run Code Online (Sandbox Code Playgroud)

我注意到我可以提供数字参数,我的功能很乐意返回#f.

> (true? 6)
#f
Run Code Online (Sandbox Code Playgroud)

所以,我想我会探索使用球拍合约来使非布尔参数在合同违规中返回错误.所以我把这个代码放在我的文件的顶部:

(provide (contract-out
          [true?         (-> boolean? boolean?)]))
Run Code Online (Sandbox Code Playgroud)

但是,在添加合同后,我仍然在球拍REPL中获得与上述相同的行为.我不明白这是怎么回事.我错过了什么?

racket

9
推荐指数
2
解决办法
1329
查看次数

使Alt_R成为Alt(A-)修饰键(而不是Meta(M-)修饰键)

我想设置Alt_LMETA(即在emacs中的M-),但是Alt_R作为ALT.如何修改.Xmodmap和/或.emacs实现此目的?

x11 emacs xmodmap

8
推荐指数
1
解决办法
1692
查看次数

如何用基础R做str_extract?

我正在平衡R的几个版本,并希望根据哪个R和我正在使用的操作系统来更改我的R库.因此,我想坚持使用基本R功能.

我正在阅读此页面以查看基本R的等价stringr::str_extract物:

http://stat545.com/block022_regular-expression.html

它建议我可以复制这个功能grep.但是,grep如果匹配,我还没有做更多的事情而不是返回整个字符串.这可能是grep单独的,还是我需要将它与另一个功能结合起来?在我的情况下,我试图区分CentOS版本6和7.

grep(pattern = "release ([0-9]+)", x = readLines("/etc/system-release"), value = TRUE)
Run Code Online (Sandbox Code Playgroud)

regex r

8
推荐指数
1
解决办法
1096
查看次数

在R中使用python虚拟环境

我使用'rPython'包来调用R中的python,但是我无法让R引用我的python的虚拟环境.

在R中,我尝试过使用

system('. /home/username/Documents/myenv/env/bin/activate')
Run Code Online (Sandbox Code Playgroud)

但运行上面我的python库路径后没有改变(我检查通过python.exec(print sys.path)).我跑的时候

python.exec('import nltk')
Run Code Online (Sandbox Code Playgroud)

我被抛出错误:

python.exec中的错误("import nltk"):没有名为nltk的模块

虽然它存在于我的虚拟环境中.

我在Ubuntu 13.04上使用R 3.0.2,Python 2.7.4.

另外,我知道我可以通过使用来改变R中的python库路径

python.exec("sys.path='\your\path'")
Run Code Online (Sandbox Code Playgroud)

但是我不想在安装新的python包时一遍又一遍地手动输入.

提前致谢!

python r virtualenv

7
推荐指数
1
解决办法
2276
查看次数

标签 统计

emacs ×4

r ×4

org-babel ×2

org-mode ×2

c ×1

dendrogram ×1

dplyr ×1

emacs-helm ×1

macos ×1

python ×1

racket ×1

regex ×1

virtualenv ×1

x11 ×1

xmodmap ×1