1

vec<-c("a", "b", "c", "d") 私の仕事は、キー文字列の左右から 2 番目の要素を抽出することです。

キー文字列が「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になります。

4

2 に答える 2

3
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-10-31T19:32:16.917 に答える
2

もっとうまくやれると確信していますが、ここでは遅いです。あなたが望むことをする小さな関数を書いてみませんか。

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" NA
于 2012-10-31T19:42:02.390 に答える