R 用所选内容中的随机字符替换字符串

R 用所选内容中的随机字符替换字符串,r,string,random,replace,R,String,Random,Replace,您如何获取字符串并用从c(“|”、“:”、“@”和“*”)中选择的一个随机字符替换、“、”、”、”、“(即点、逗号或空格)的每个实例 假设我有一根这样的绳子 Aenean ut odio dignissim augue rutrum faucibus. Fusce posuere, tellus eget viverra mattis, erat tellus porta mi, at facilisis sem nibh non urna. Phasellus quis turpis qui

您如何获取字符串并用从
c(“|”、“:”、“@”和“*”)中选择的一个随机字符替换
、“
”、
”、
”、
(即点、逗号或空格)的每个实例

假设我有一根这样的绳子

 Aenean ut odio dignissim augue rutrum faucibus. Fusce posuere, tellus eget viverra mattis, erat tellus porta mi, at facilisis sem nibh non urna. Phasellus quis turpis quis mauris suscipit vulputate. Sed interdum lacus non velit. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae;

要获得一个随机字符,我们可以将字符视为向量,然后使用
sample
函数从中选择一个。我假设首先需要搜索点、逗号或空格,然后使用
gsub
函数替换所有这些

根据您的说明,尝试以下方法:

x <- c("this, is nice.", "nice, this is.")
gr <- gregexpr("[., ]", x)
regmatches(x,gr) <- lapply(lengths(gr), sample, x=c('|',':','@','*'))
x
#[1] "this|*is@nice:" "nice@|this*is:"

x根据您的说明,尝试以下方法:

x <- c("this, is nice.", "nice, this is.")
gr <- gregexpr("[., ]", x)
regmatches(x,gr) <- lapply(lengths(gr), sample, x=c('|',':','@','*'))
x
#[1] "this|*is@nice:" "nice@|this*is:"

x这里是另一个使用
chartr的选项

pat <- paste(sample(c('|', ';', '@', '*'), 3), collapse="")
chartr('., ', pat, x)
#[1] "this|*is*nice;" "nice|*this*is;"

pat这里是另一个使用
chartr的选项

pat <- paste(sample(c('|', ';', '@', '*'), 3), collapse="")
chartr('., ', pat, x)
#[1] "this|*is*nice;" "nice|*this*is;"

pat
gsub('[,]',sample(c('|',':','@','*'),1),s)
其中
s
是字符串。是否希望(点、逗号或空格)始终替换为相同的字符?@latemail no.只要是来自c('.'、':'、'@'、'*'))的任何人都可以用从字符向量中选择的一个随机字符替换它。谢谢
gsub(“[,]”,sample(c(“|)”,“:”,“@',“*”),1),s)
其中
s
是字符串。是否希望(点、逗号或空格)始终替换为相同的字符?@latemail no.只要是c(“|“,”:“,“@“,“*”)中的任何人都可以使用从字符向量中选择的一个随机字符替换alistaire it。谢谢与我的结果略有不同,它将每个原始字符与相同的新字符相匹配,但我确实喜欢
chartr
,因为我认为它是外包给C代码的。@您最近的邮件是正确的,它将与相同的字符相匹配。在阅读OP的问题时,它不是很好clear@akrun正当谢谢你的努力!这是另一个很好的方法!与我的结果略有不同,它将每个原始字符与相同的新字符相匹配,但我确实喜欢
chartr
,因为我认为它是外包给C代码的。@您最近的邮件是正确的,它将与相同的字符相匹配。在阅读OP的问题时,它不是很好clear@akrun正当谢谢你的努力!这是另一个很好的方法!