2017-09-22 11 views
1

他のベクトル/リストに格納された複数の条件に基づいてif条件を適用したいというnベクトルを持っているとします。私の元のベクトルに名前?R:リスト/ベクトルに基づく複数の条件の場合の文

set.seed(1234) 

# Data 
b <- rpois(100, 4) 

# Condition 
a <- 1:10 
names(a) <- paste0(seq(10,100, by = 10),'%') 
+0

編集済み:条件は離散数ではなく、<=間隔である必要があります。 – FoxyReign

答えて

1

これは必要なものですか?

set.seed(1234) 

# n-vector 
b <- rpois(100, 4) 

# multiple conditions stored in another vector/list 
a <- 1:10 
names(a) <- paste0(seq(10,100, by = 10),'%') 

# loop and assign the names to the original vector 
for(i in unique(a)){ 
    b <- ifelse(b==i,names(a[a==i]),b) 
} 
b 
[1] "20%" "40%" "40%" "40%" "60%" "50%" "0" "20%" "50%" "40%" "50%" "40%" "30%" "70%" "30%" "60%" "30%" "30%" 
[19] "20%" "20%" "30%" "30%" "20%" "10%" "20%" "60%" "40%" "70%" "60%" "10%" "40%" "30%" "30%" "40%" "20%" "50%" 
[37] "20%" "30%" "100%" "60%" "40%" "50%" "30%" "40%" "30%" "40%" "50%" "40%" "30%" "50%" "10%" "30%" "50%" "40%" 
[55] "20%" "40%" "40%" "50%" "20%" "60%" "60%" "10%" "30%" "0" "30%" "50%" "30%" "40%" "10%" "40%" "20%" "70%" 
[73] "0" "50%" "10%" "40%" "30%" "10%" "30%" "50%" "70%" "40%" "20%" "40%" "20%" "70%" "30%" "30%" "20%" "70%" 
[91] "20%" "70%" "20%" "20%" "20%" "40%" "30%" "10%" "30%" "50%" 
+1

ありがとう!これはうまくいきました。私は私の要求に合致するようにオペレータコマンドを置き換えました。 – FoxyReign

0

私たちは 'A' に基づいて名付けられbベクトルを持っている必要がある場合は、ある 'B' の要素があることをmatch

names(b) <- names(a)[match(b, a)] 
names(b) 
#[1] "20%" "40%" "40%" "40%" "60%" "50%" NA  "20%" "50%" "40%" "50%" "40%" "30%" "70%" "30%" 
#[16] "60%" "30%" "30%" "20%" "20%" "30%" "30%" "20%" "10%" "20%" "60%" "40%" "70%" "60%" "10%" 
#[31] "40%" "30%" "30%" "40%" "20%" "50%" "20%" "30%" "100%" "60%" "40%" "50%" "30%" "40%" "30%" 
#[46] "40%" "50%" "40%" "30%" "50%" "10%" "30%" "50%" "40%" "20%" "40%" "40%" "50%" "20%" "60%" 
#[61] "60%" "10%" "30%" NA  "30%" "50%" "30%" "40%" "10%" "40%" "20%" "70%" NA  "50%" "10%" 
#[76] "40%" "30%" "10%" "30%" "50%" "70%" "40%" "20%" "40%" "20%" "70%" "30%" "30%" "20%" "70%" 
#[91] "20%" "70%" "20%" "20%" "20%" "40%" "30%" "10%" "30%" "50%" 

注意を使用「a」ではなく。その要素のために何がnamesであるべきかは明確ではない。デフォルトでは、matchはそれらの要素に対してNAを返し、その要素の名前はNAになります。変更する必要がある場合は、それを実行することができます

+0

これは、ベクトルbを離散数として考えるときに働きました。私は最初の投稿によく質問を書かなかったことを謝罪します。ありがとうございました! – FoxyReign

+0

@FoxyReign '<='を使いたい場合、 'names(b)< - names(a)[findInterval(b、a)]' – akrun

関連する問題