条件赋值 - 当条件和预期 return 值不具有相同特征时,ifelse() 是最好的吗? [R]
Conditional assignment of value - is ifelse() the best when condition and intended return value don't have same features? [R]
我想有条件地为变量赋值。例如,我想创建一个 alphabet
变量,如果某个字母是小写,则赋值给它 letters
,如果某个字母是大写,则赋值给它 LETTERS
。
第一个想到的是使用<-
和ifelse()
。但是,这对我来说不起作用:
> alphabet <- ifelse("B" %in% letters, letters, LETTERS)
> alphabet
[1] "A"
实际上我看到,参考ifelse(test, yes, no)
,函数描述说:“ifelse
returns 一个与test
形状相同的值,它是填充了从 yes
或 no
[...] 中选择的元素。在“值”部分,它指定了更多内容:“与 test
和数据具有 相同长度和属性 (包括维度和“class
”)的向量来自 yes
或 no
的值的值。[...]".
好的 - 我意识到我可以使用 assign()
而不是 <-
并且值已正确分配给变量:
> 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"
但是,根据上面的输出,ifelse()
仍然是 returns 所选字母集中的第一个字符。
我对此不满意,因为...
- ...事实上我的代码返回了一些我不需要的东西,并且...
- ...事实上
ifelse()
甚至无法与 <-
一起使用 ...
让我想知道是否有更好的方法来做到这一点。
是否有首选/更高效/更好的礼节或以任何方式更合适的选项来有条件地分配一个值,如在这种情况下,或者我应该忽略困扰我的事情?
我们可以用if/else
代替ifelse
alphabet <- if('B' %in% letters) letters else LETTERS
我想有条件地为变量赋值。例如,我想创建一个 alphabet
变量,如果某个字母是小写,则赋值给它 letters
,如果某个字母是大写,则赋值给它 LETTERS
。
第一个想到的是使用<-
和ifelse()
。但是,这对我来说不起作用:
> alphabet <- ifelse("B" %in% letters, letters, LETTERS)
> alphabet
[1] "A"
实际上我看到,参考ifelse(test, yes, no)
,函数描述说:“ifelse
returns 一个与test
形状相同的值,它是填充了从 yes
或 no
[...] 中选择的元素。在“值”部分,它指定了更多内容:“与 test
和数据具有 相同长度和属性 (包括维度和“class
”)的向量来自 yes
或 no
的值的值。[...]".
好的 - 我意识到我可以使用 assign()
而不是 <-
并且值已正确分配给变量:
> 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"
但是,根据上面的输出,ifelse()
仍然是 returns 所选字母集中的第一个字符。
我对此不满意,因为...
- ...事实上我的代码返回了一些我不需要的东西,并且...
- ...事实上
ifelse()
甚至无法与<-
一起使用 ...
让我想知道是否有更好的方法来做到这一点。
是否有首选/更高效/更好的礼节或以任何方式更合适的选项来有条件地分配一个值,如在这种情况下,或者我应该忽略困扰我的事情?
我们可以用if/else
代替ifelse
alphabet <- if('B' %in% letters) letters else LETTERS