【发布时间】:2014-07-19 23:41:48
【问题描述】:
我有一个字符串向量,我想删除向量中每个元素的第 5 个字符。我找到了this answer,但对我帮助不大。
一开始我以为
substr(myvec, 5,5) <- ""
会成功的。但碰巧这段代码不起作用。
做我打算做的事情的解决方法就是:
paste(substr(myvec, 1,4), substr(myvec, 6,nchar(myvec)), sep="")
但是真的不可能像我打算的那样直接使用 substr 吗? 下面是一个可重现的例子。
myvec <- c("19601Urbana", "19601Rural", "19701Urbana", "19701Rural", "19801Urbana", "19801Rural", "19912Urbana", "19912Rural", "20002Urbana", "20002Rural", "20102Urbana", "20102Rural")
有什么想法吗?我想我可以尝试一些正则表达式,但似乎使用它会有点困难。而且,这似乎有点矫枉过正。
更新:由于有些人说它可以在他们的计算机上运行,我的会话信息: R 版本 3.0.0 (2013-04-03) 平台:x86_64-w64-mingw32/x64(64位) 我使用的是 Windows 8。
【问题讨论】:
-
substr(myvec, 5,5) <- ""有效工作 -
@rawr 真的吗?我试过了,它对我不起作用。例如,您可以设置
substr(myvec,5,5) <- "a",但不能设置为空字符串。 -
我刚刚在“R version 3.1.0 (2014-04-10) Platform: x86_64-apple-darwin10.8.0 (64-bit)”中运行了
x<-"aaaaXaa"; x; substr(x,5,5)<-""; x,它删除了“X” . -
当我运行
z<-"aaaaXaaa";substr(z,5,5)<-"";z时,我得到:[1] "aaaaXaaa"。R version 3.0.3 (2014-03-06) Platform: x86_64-w64-mingw32/x64 (64-bit) -
在 ubuntu 12.04、R3.1.1 上为我工作。这个正则表达式(我认为)将在文本
gsub("(.*)\\d(.*)", "\\1\\2", myvec)开始之前删除数字(虽然它的眼睛很痛;))