将字符串中的字符替换为R中的零

将字符串中的字符替换为R中的零,r,substring,R,Substring,我有一个字符串向量,我想去掉向量中每个元素的第5个字符。我找到了,但对我没什么帮助 起初,我认为 substr(myvec, 5,5) <- "" 但是,真的不可能像我打算的那样直接使用substr吗? 下面是一个可复制的示例 myvec <- c("19601Urbana", "19601Rural", "19701Urbana", "19701Rural", "19801Urbana", "19801Rural", "19912Urbana", "19912Rural", "

我有一个字符串向量,我想去掉向量中每个元素的第5个字符。我找到了,但对我没什么帮助

起初,我认为

substr(myvec, 5,5) <- "" 
但是,真的不可能像我打算的那样直接使用substr吗? 下面是一个可复制的示例

myvec <- c("19601Urbana", "19601Rural", "19701Urbana", "19701Rural", "19801Urbana", "19801Rural", "19912Urbana", "19912Rural", "20002Urbana", "20002Rural", "20102Urbana", "20102Rural")

myvec尽管有评论,我还是得到了与您相同的结果。无论出于何种原因,将
substr(…)
设置为空字符串(在我的系统上)都不会起任何作用。所以这里有一个解决办法

ch <- intToUtf8(1)          # non-printing character
substr(myvec,5,5) <- ch     # substitute that
gsub(ch,"",myvec,fixed=T)   # now get rid of it...
#  [1] "1960Urbana" "1960Rural"  "1970Urbana" "1970Rural"  "1980Urbana" ...

ch
substr(myvec,5,5)@rawr真的吗?我试过了,但它对我不起作用。当我在Ubuntu12.04,R3.1.1上运行
zWorks时,你可以设置我刚刚运行的
substr(myvec,5,5)。这个正则表达式(我想)将删除紧跟在文本开头的数字
gsub((.*)\\d(.*),“\\1\\2”,myvec)
(尽管它让人眼痛;)
ch <- intToUtf8(1)          # non-printing character
substr(myvec,5,5) <- ch     # substitute that
gsub(ch,"",myvec,fixed=T)   # now get rid of it...
#  [1] "1960Urbana" "1960Rural"  "1970Urbana" "1970Rural"  "1980Urbana" ...