【发布时间】:2019-05-07 11:31:59
【问题描述】:
假设,我有一个向量 a 与 length(a) = l 和 l >= 1。
元素"x" 在a 中至少出现一次,但我们不知道确切的位置。
我想用值 c(1,2,3) 替换 a 中的每个 "x"
例如:a = ("y","x","z"),那么我希望替换后的结果是a = ("y",1,2,3,"z")。
我想过这样做:
l <- length(a)
pos.x <- which(a == "x")
if(l == 1L & pos.x == 1L) {
a <- c(1,2,3)
} else if (l > 1L & pos.x == 1) {
a <- c(1,2,3,a[-1])
} else if (l > 1L & pos.x == l) {
a <- c(a[-l],1,2,3)
} else if (l >= 3 & pos.x != 1 & pos.x != l) {
a <- c(a[1:(pos.x - 1)],1,2,3,a[(pos.x + 1):l])
}
虽然这段代码确实有效,但我的问题是是否有一种更“优雅”的方式来解决这个问题,它需要更少的处理能力,并且可以取代多个 "x"。
谢谢!
【问题讨论】:
-
l看起来有点像1,让我困惑了一秒钟。