2017-02-24 66 views
-1

我有個字符向量:指標向量基於兩個特徵向量的共同元件

beta = c("V1","V2","V3","V4","V5") 

和另一個字符向量:

beta1 = c("V1","V3") 

現在我想創建長度5的NUM矢量alpha按照以下方式:如果"V_{i}"存在於beta1中,則向量alpha處的第i個索引將取值1。否則第i個索引值將是0

例如,在上述情況下,alphac(1,0,1,0,0)因爲「V1」和「V3」存在於beta1

如果beta1c("V4","V5")然後alphac(0,0,0,1,1)

我怎樣才能做到這一點在R以有效的方式?

+0

一個疑問,假設「β1的」由具有比「的β長度大',你想要返回'beta'的長度嗎? – akrun

回答

1

我們可以使用%in%來查找第一個向量中的元素,它也在第二個向量中作爲logical向量。作爲TRUE/FALSE值存儲爲1/0,它強制爲二進制與as.integer

as.integer(beta %in% beta1) 
0

match用:

indicator <- rep(0, length(beta)) 
indicator[match(beta1, beta)] <- 1 
indicator 
# [1] 1 0 1 0 0