mercredi 20 avril 2016

R ifelse returns (wrong) order number instead of the name I want

I have a condition list, sample list nameShown, which are F or T, 85 items sample, which are sample names, 85 items I want to use ifelse to show sample names only when it's TRUE in the condition nameShown.

Here is the code and/or display. I don't know why I couldn't get sample name, instead I got numbers. The numbers look like the order number in the list and if it IS, it's probably a wrong order number. See comments in the code section. I don't know why and how to correct it. TIA

> nameShown
 [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [13] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [25] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [37] FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [49] FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
 [61] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [73] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [85] FALSE
 > sample
 [1] H_S52 H_S48 H_S49 H_S76 H_S75 H_S50 H_S51 H_S56 H_S77 H_S54 H_S55 H_S53
 [13] H_S12 H_S64 H_S10 H_S3  H_S11 H_S4  H_S13 H_S9  H_S16 H_S62 H_S61 H_S24
 [25] H_S17 H_S23 H_S33 H_S65 H_S67 H_S70 H_S39 H_S85 H_S44 H_S34 H_S36 H_S20
 [37] H_S68 H_S43 H_S71 H_S40 H_S86 H_S8  H_S18 H_S72 H_S66 H_S35 H_S41 H_S42
 [49] H_S69 H_S38 H_S73 H_S37 H_S7  H_S87 H_S19 H_S5  H_S6  H_S22 H_S83 H_S90
 [61] H_S79 H_S74 H_S91 H_S84 H_S88 H_S82 H_S81 H_S47 H_S80 H_S89 H_S92 H_S58
 [73] H_S27 H_S63 H_S57 H_S78 H_S60 H_S14 H_S45 H_S28 H_S25 H_S26 H_S32 H_S59
 [85] H_S31
 85 Levels: H_S10 H_S11 H_S12 H_S13 H_S14 H_S16 H_S17 H_S18 H_S19 ... H_S92
 > ifelse(nameShown, sample, 'NO')
 [1] "NO" "NO" "NO" "NO" "NO" "NO" "NO" "NO" "NO" "NO" "NO" "NO" "NO" "NO" "NO"
 [16] "NO" "NO" "NO" "NO" "NO" "NO" "NO" "NO" "NO" "NO" "NO" "NO" "NO" "NO" "NO"
 [31] "NO" "NO" "NO" "NO" "NO" "NO" "NO" "NO" "NO" "NO" "78" "NO" "NO" "NO" "NO"
 [46] "NO" "NO" "NO" "NO" "NO" "NO" "NO" "NO" "NO" "9"  "NO" "NO" "NO" "NO" "NO"
 [61] "NO" "NO" "NO" "NO" "NO" "NO" "NO" "NO" "NO" "NO" "NO" "NO" "NO" "NO" "NO"
 [76] "69" "NO" "NO" "NO" "NO" "NO" "NO" "NO" "NO" "NO"
 # for example 69 above --- I actually want the sample names H_S78. sample[69] produces H_S80

 > ifelse(nameShown, 'YES', sample)
 [1] "41"  "36"  "37"  "67"  "66"  "39"  "40"  "45"  "68"  "43"  "44"  "42"
 [13] "3"   "54"  "1"   "18"  "2"   "28"  "4"   "82"  "6"   "52"  "51"  "13"
 [25] "7"   "12"  "21"  "55"  "57"  "61"  "27"  "77"  "33"  "22"  "24"  "10"
 [37] "58"  "32"  "62"  "29"  "YES" "71"  "8"   "63"  "56"  "23"  "30"  "31"   
 [49] "59"  "26"  "64"  "25"  "60"  "79"  "YES" "38"  "49"  "11"  "75"  "83"
 [61] "70"  "65"  "84"  "76"  "80"  "74"  "73"  "35"  "72"  "81"  "85"  "47"
 [73] "16"  "53"  "46"  "YES" "50"  "5"   "34"  "17"  "14"  "15"  "20"  "48"
 [85] "19"
 > sample[1]
 [1] H_S52
 85 Levels: H_S10 H_S11 H_S12 H_S13 H_S14 H_S16 H_S17 H_S18 H_S19 ... H_S92

Aucun commentaire:

Enregistrer un commentaire