【发布时间】:2017-10-03 12:52:46
【问题描述】:
我想用 x 替换以下向量中每个字符串的第二个字母。
ba <- c('ba','aba','baba')
# goal: bx, axa, bxba
通常我只会使用substr(ba,2,2) <- 'x'。但由于过于复杂而无法进入此处的原因,我试图避免substr,而是寻找另一种解决方案。所以我尝试拆分字符串并替换每个列表的第二个元素。但我收到此错误消息。
ba2 <- strsplit(ba,'')
lapply(ba2,function(x) x[2]) <- 'x'
# Error in lapply(ba2, function(x) x[2]) <- "x" :
# could not find function "lapply<-"
我该如何解决这个问题?有没有办法将lapply 与<- 结合使用?
【问题讨论】:
-
sub更好。对于lapply/strsplit方法,您可以使用sapply(lapply(strsplit(ba, ""), function(x) {x[2] <- "x"; x}), paste, collapse="")或sapply(strsplit(ba, ""), function(x) {x[2] <- "x"; paste(x, collapse="")})。 -
substr而不是substr<-的另一种选择是paste0(substr(ba, 1, 1), "x", substr(ba, 3, 100))。 -
谢谢谢谢谢谢!我不知道您可以在
sapply中嵌入两个以;分隔的命令。这非常有效。
标签: r variable-assignment lapply