2017-04-13 8 views
1

私はベクトル2で開始した場合、別のベクトルに基づいて、特定の位置での値、および試験有するベクターの作成:項目が1に等しいかを確認するために、特定

vector1 <- c(0, 1, 1, 1, 0, 1, 1, 1, 0, 1) 

test <- which(vector1 == 1) 

試験は、現在等しい:2、3、4、6、次いで、7、8、10

、Iは、ランダム試験の項目のうちの2つを選択する:

sample_vector <- sample(test, 2, replace = FALSE) 

上記コードsample_vector生成:6,3

vector2 <- 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 

私は本質的に等しい1にsample_vectorのアイテムだけを割り当てるしているよ、とベクトル1から残りの項目は0に等しいに割り当てられます。

私の質問は、私はsample_vectorを取り、にそれを回す行う方法ですすなわち、それはvector2のように見えます)。 vector2はvector1(10項目)で同じ長さを持つ必要があります。

ありがとうございます!

+1

'(整数(長さ(ベクトル2))を、sample_vector、1)交換' ' – 989

+0

TABULATE(sample_vector、長さ(ベクトル2))' ' –

答えて

1
vector2 <- rep(0, length(vector1)) 
vector2[sample_vector] <- 1 
0

このコードを使用してください。

vector2 <- rep(0,len(vector1)) 
vector2[sample_vector] = 1 
1
set.seed(44) 
vector1 <- c(0, 1, 1, 1, 0, 1, 1, 1, 0, 1) 
test <- which(vector1 == 1) 
sample_vector <- sample(test, 2, replace = FALSE) 
sample_vector 
#[1] 8 3 

replace(tabulate(seq_along(vector1)) - 1, sample_vector, 1) 
#[1] 0 0 1 0 0 0 0 1 0 0 
+0

replace'が冗長であると思われます –

関連する問題