相关疑难解决方法(0)

如何在R中使用带参数的grep?

显然,我没有得到grep在R中的工作方式.如果我在OS X终端上使用grep,我可以使用参数-o,这使得grep只返回匹配的部分.在R中,我找不到如何做相应的事情.阅读手册我认为值是正确的方法,这更好,因为它返回字符而不是索引,但仍返回整个字符串.

# some string  fasdjlk465öfsdj123 
# R
test <-  fasdjlk465öfsdj123 
grep("[0-9]",test,value=TRUE) # returns  "fasdjlk465öfsdj123"

# shell
grep -o '[0-9]' fasdjlk465öfsdj123
# returns 4 6 5 1 2 3
Run Code Online (Sandbox Code Playgroud)

R中缺少的参数是什么?

编辑:Joris Meys的建议非常接近我想要做的事情.我得到一个矢量作为readLines的结果.我想检查向量的每个元素是否有数字并返回这些数字.我真的很惊讶没有标准的解决方案.我想过使用一些可以在字符串上运行的regexp函数并像grep -o一样返回匹配,然后在该向量上使用lapply.grep.custom最接近 - 我会尽力为我工作.

regex grep r

1
推荐指数
2
解决办法
6063
查看次数

devtools包中的bash有什么作用?

在回答前一个问题时,R中用于调用sed,rsync,ssh等的system()的替代方法:是否存在函数,我应该编写自己的函数,还是我忽略了这一点?,hadley的 回答表明,当遇到类似问题时,他使用了以下功能:

bash <- function() system("bash")
Run Code Online (Sandbox Code Playgroud)

我在他的devtools包中找到了原件; 在devtools/R/bash.R中实现:

#' Open bash shell in package directory.
#'
#' @param pkg package description, can be path or package name.  See
#'   \code{\link{as.package}} for more information
#' @export
bash <- function(pkg = NULL) {
  pkg <- as.package(pkg)

  in_dir(pkg$path, system("bash"))
}
Run Code Online (Sandbox Code Playgroud)

我不明白这一点.当我发出

bash <- function() system("bash")
Run Code Online (Sandbox Code Playgroud)

它将我发送到bash shell,之后exit返回R会话,但没有任何bash功能.似乎我可以通过发出以下命令对之一来获得相同的效果(R中的第一个命令,bash中的第二个命令)

system('bash')
exit
Run Code Online (Sandbox Code Playgroud)

要么

q('yes')
R
Run Code Online (Sandbox Code Playgroud)

被攻击的部分是由于我的复制/粘贴错误

我也在bashdevtools包中找不到该函数的任何进一步用法

有人可以帮我理解如何使用这个bash功能; 是否可以在交互式R模式之外的上下文中使用(例如在脚本或函数内)?

bash r devtools

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

标签 统计

r ×2

bash ×1

devtools ×1

grep ×1

regex ×1