I want to conditionally assign a value to a variable. For example, I want to create an alphabet
variable and assign to it letters
if a certain letter is lowercase, or assign to it LETTERS
if a certain letter is uppercase.
The first thought was to use <-
and ifelse()
. However, this is not working in my case:
> alphabet <- ifelse("B" %in% letters, letters, LETTERS)
> alphabet
[1] "A"
In fact I saw that, with reference to ifelse(test, yes, no)
, the function description says: "ifelse
returns a value with the same shape as test
which is filled with elements selected from either yes
or no
[...]". In the Value section, it specifies a bit more: "A vector of the same length and attributes (including dimensions and "class
") as test
and data values from the values of yes
or no
. [...]".
Ok - I realised that I can use assign()
instead of <-
and the value is assigned correctly to the variable:
> ifelse("B" %in% letters, assign("alphabet", letters), assign("alphabet", LETTERS))
[1] "A"
> alphabet
[1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z"
However, as per the output above, ifelse()
still returns the first character from the chosen set of letters.
I am not happy with this, because...
- ... the fact that my code is returning something that I don't need, and...
- ... the fact that
ifelse()
wouldn't actually even work with<-
...
make me wonder whether there is a better way to do this.
Is there a preferred / more efficient / better-etiquette or in any way more appropriate option to assign a value conditionally as in this case, or should I just ignore what is bothering me?
Aucun commentaire:
Enregistrer un commentaire