あなたはこのように意味するか:あなたがする必要がある場合は
myMat2 <- matrix(unlist(myList), ncol = 3)
## As the vectors are now in the cols, we use apply over the cols
apply(myMat, 2, function(x, want) isTRUE(all.equal(x, want)), wantVec)
## or
any(apply(myMat, 2, function(x, want) isTRUE(all.equal(x, want)), wantVec))
:
myMat <- matrix(unlist(myList), ncol = 3, byrow = TRUE)
## As the vectors are now in the rows, we use apply over the rows
apply(myMat, 1, function(x, want) isTRUE(all.equal(x, want)), wantVec)
## or
any(apply(myMat, 1, function(x, want) isTRUE(all.equal(x, want)), wantVec))
または列によって:
wantVec <- c(3,1,2)
myList <- list(A = c(1:3), B = c(3,1,2), C = c(2,3,1))
sapply(myList, function(x, want) isTRUE(all.equal(x, want)), wantVec)
## or, is the vector in the set?
any(sapply(myList, function(x, want) isTRUE(all.equal(x, want)), wantVec))
私たちは、マトリックスと同様のことを行うことができますこれはたくさん、あなた自身の関数を書いてください
vecMatch <- function(x, want) {
isTRUE(all.equal(x, want))
}
などです。
> sapply(myList, vecMatch, wantVec)
A B C
FALSE TRUE FALSE
> any(sapply(myList, vecMatch, wantVec))
[1] TRUE
あるいは全部をラップ:リストmyList
の
が
vecMatch <- function(x, want) {
out <- sapply(x, function(x, want) isTRUE(all.equal(x, want)), want)
any(out)
}
> vecMatch(myList, wantVec)
[1] TRUE
> vecMatch(myList, 5:3)
[1] FALSE
編集:私はall.equal()
通話に巻き付けisTRUE()
を使用する理由にクイックコメント。それの引数がTRUE
ときに限り、それはTRUE
を返すため
> all.equal(1:3, c(3,2,1))
[1] "Mean relative difference: 1"
isTRUE()
は、ここに役立ちます。これは、2つの引数はない等しいところ、all.equal()
が論理値(FALSE
)を返していないという事実によるものであり、それ以外の場合はFALSE
を返します。
やプログラミング言語は何してくださいある上で交差()を使用する方法ですか? – kellogs
言語はRです。 – dmkc