vec<-c("a", "b", "c", "d")我的任务是从密钥字符串的左边和右边提取第二个元素。
如果我们的密钥字符串是"d",如果我们
i<-c("d")
vec.1 <- append(vec.1, vec[which(vec == i) + 2])我们得到NA。但如果我们这么做了
i<-c("a")
vec.1 <- append(vec.1, vec[which(vec == i) - 2])我们得到"b","c","d“。是否可以将下标中的负值视为超出向量的位置,就像超过向量长度的正下标一样?这样,结果将是一个NA。
发布于 2012-11-01 03:32:17
library(Hmisc)
Lag(vec,2)[vec=="d"]
#[1] "b"
Lag(vec,2)[vec=="a"]
#[1] ""
Lag(vec,-2)[vec=="a"]
#[1] "c"
Lag(vec,-2)[vec=="c"]
#[1] ""发布于 2012-11-01 03:42:02
我相信我能做得更好,但这里已经很晚了。为什么不写一个小函数来做你想做的事情呢?
myVec <- function(input, match, change) {
temp = which(input == match)
if ((temp + change) <= 0) {
append(NA, input)
} else {
append(input, input[temp + change])
}
}
vec <- c("a", "b", "c", "d")
myVec(vec, "a", -1)
# [1] NA "a" "b" "c" "d"
myVec(vec, "c", -1)
# [1] "a" "b" "c" "d" "b"
myVec(vec, "c", -3)
# [1] NA "a" "b" "c" "d"
myVec(vec, "d", 1)
# [1] "a" "b" "c" "d" NAhttps://stackoverflow.com/questions/13165973
复制相似问题