我想从向量中的字符串中删除特定字符,类似于Excel中的" 查找和替换"功能.
以下是我开始的数据:
group <- data.frame(c("12357e", "12575e", "197e18", "e18947")
Run Code Online (Sandbox Code Playgroud)
我从第一栏开始; 我想通过删除e's 来生成第二列:
group group.no.e
12357e 12357
12575e 12575
197e18 19718
e18947 18947
Run Code Online (Sandbox Code Playgroud) str = "Hello? World?"
Run Code Online (Sandbox Code Playgroud)
预期产出是:
"Hello:) World:("
Run Code Online (Sandbox Code Playgroud)
我可以做这个: str.gsub("?", ":)").gsub("?", ":(")
有没有其他方法可以在单个函数调用中执行此操作?就像是:
str.gsub(['s1', 's2'], ['r1', 'r2'])
Run Code Online (Sandbox Code Playgroud) 当然我可以替换这样的特定参数:
mydata=c("á","é","ó")
mydata=gsub("á","a",mydata)
mydata=gsub("é","e",mydata)
mydata=gsub("ó","o",mydata)
mydata
Run Code Online (Sandbox Code Playgroud)
但是肯定有一种更容易的方法来完成这一切,对吧?我没有发现gsub帮助非常全面.
string = c("apple", "apples", "applez")
grep("apple", string)
Run Code Online (Sandbox Code Playgroud)
这将为我提供所有三个元素的索引string.但我希望在单词"apple"上完全匹配(即我只想grep()返回索引1).
我应该如何将帖子标题转换为Ruby中的slug?
标题可以有任何字符,但我只想让slug允许[a-z0-9-_](它应该允许任何其他字符?).
所以基本上:
我想在更换点"2014.06.09"到"2014-06-09".我正在使用gsub()函数.如果
x <- "2014.06.09"
gsub('2', '-' ,x)
# [1] "-014.06.09"
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试
gsub('.', '-', x)
# [1] "----------"
Run Code Online (Sandbox Code Playgroud)
而不是"2014-06-09".
class(x)
# "character"
Run Code Online (Sandbox Code Playgroud)
有些人可以建议我一个正确的方法,以及为什么它不适用于'.'(点)
我有一个字符串让我们说http://someUrul.com/someController/SOmeAction?SomeQS=http://someOtherUrl
我想用https替换第一个http,但不是第二个,所以我最终得到https://someUrul.com/someController/SOmeAction?SomeQS = http:// someOtherUrl
我怎样才能用一个简单的gsub实现这个目标?以下内容替换了两者.
request.url.gsub(/http:/, "https:")
Run Code Online (Sandbox Code Playgroud) 我有一个包含随机字符的字符串列表,例如:
list=list()
list[1] = "djud7+dg[a]hs667"
list[2] = "7fd*hac11(5)"
list[3] = "2tu,g7gka5"
Run Code Online (Sandbox Code Playgroud)
我想知道unique()这个列表中至少有一次()存在哪些数字.我的例子的解决方案是:
解: c(7,667,11,5,2)
如果有人的方法不认为11是"十一"而是"一和一",那么它也会很有用.这种情况下的解决方案是:
解: c(7,6,1,5,2)
(我在相关主题上发现了这篇文章:从字符串向量中提取数字)
我正在努力删除字符串中下划线之前的子字符串.我想在下划线变化之前使用*(通配符)作为位:
a <- c("foo_5", "bar_7")
a <- gsub("*_", "", a, perl = TRUE)
Run Code Online (Sandbox Code Playgroud)
结果应如下所示:
> a
[1] 5 7
Run Code Online (Sandbox Code Playgroud)
我也试过像"^*"或"? "这样的东西但是没有真正起作用.
我最近一直在gsub广泛使用,我注意到短模式比长模式运行得更快,这并不奇怪.这是一个完全可重现的代码:
library(microbenchmark)
set.seed(12345)
n = 0
rpt = seq(20, 1461, 20)
msecFF = numeric(length(rpt))
msecFT = numeric(length(rpt))
inp = rep("aaaaaaaaaa",15000)
for (i in rpt) {
n = n + 1
print(n)
patt = paste(rep("a", rpt[n]), collapse = "")
#time = microbenchmark(func(count[1:10000,12], patt, "b"), times = 10)
timeFF = microbenchmark(gsub(patt, "b", inp, fixed=F), times = 10)
msecFF[n] = mean(timeFF$time)/1000000.
timeFT = microbenchmark(gsub(patt, "b", inp, fixed=T), times = 10)
msecFT[n] = mean(timeFT$time)/1000000.
}
library(ggplot2)
library(grid)
library(gridExtra)
axis(1,at=seq(0,1000,200),labels=T)
p1 = qplot(rpt, …Run Code Online (Sandbox Code Playgroud)