100 個をサンプリングした 150 個の数値のデータ セットがあります。残りの 50 個を特定する (新しいマトリックスに入れる) にはどうすればよいですか?
X <- runif(150)
Combined <- sample(X, 100)
サンプルを別のベクターとして作成します。
using <- sample(1:150, 100)
Entires <- All.Entries[using]
Non.Entries <- All.Entries[-using]
すべての数字:
x <- sample(10, 150, TRUE) # as an example
ランダムサンプル:
Combined <- sample(x,100)
残りの数:
xs <- sort(x) # sort the values of x
tab <- table(match(Combined, xs))
Remaining <- xs[-unlist(mapply(function(x, y) seq(y, length = x),
tab, as.numeric(names(tab))))]
ノート。このソリューションは、x
値が重複している場合にも機能します。
Combined
が のサブセットである場合、含まれていないX
の要素を見つけるには、次を使用できます。X
Combined
X[ !(X %in% Combined) ]
X %in% Combined)
要素が存在する場合と要素が存在しない場合X
の値 と同じサイズの論理ベクトルを提供します。TRUE
Combined
FALSE
コースの説明として: この論理ベクトルは指標として使用できます。 X[ X %in% Combined ]
にあるものすべてを提供X
しX
ますCombined
。
反対を求めているので、論理ベクトルを否定して、にないものX[ !(X %in% Combined) ]
をすべて取得します。X
X
Combined
IFX
に重複が含まれている場合は、名前に基づいてフィルタリングできます (もちろん、一意の名前を想定しています)。
X[ !(names(X) %in% names(Combined)) ]
# or if sampling by rows
X[ !(rownames(X) %in% rownames(Combined)) ]
簡単に名前を付けることができますX
names(X) <- 1:length(X)
# or for multi-dimensional
rownames(X) <- 1:nrow(X)
のヘルプ ドキュメントも参照してください。
?"%in%" # note the quotes
?which
?match
mat[-indices,]
例のようにマイナス記号を使用します。
# Create a sample matrix of 150 rows, 3 columns
mat <- matrix(rnorm(450), ncol=3)
# Take a sampling of indices to the rows
indices <- sample(nrow(mat), 100, replace=F)
# Splice the matrix
mat.included <- mat[indices,]
mat.leftover <- mat[-indices,]
# Confirm everything is of proper size
dim(mat)
# [1] 150 3
dim(mat.included)
# [1] 100 3
dim(mat.leftover)
# [1] 50 3