请考虑以下
string_1 = "??????????"
string_2 = " bob"
string_3 = "_bob_"
string_1 < 0
# [1] TRUE
string_2 < 0
# [1] TRUE
string_3 < 0
# [1] TRUE
但
string_4 = "bob"
string_4 < 0
# [1] FALSE
为什么字符串被 R 视为负值?是否有任何特定字符将字符串变为负值?如果是这样,我怎么能清理字符串向量不被视为负数?
请考虑以下
string_1 = "??????????"
string_2 = " bob"
string_3 = "_bob_"
string_1 < 0
# [1] TRUE
string_2 < 0
# [1] TRUE
string_3 < 0
# [1] TRUE
但
string_4 = "bob"
string_4 < 0
# [1] FALSE
为什么字符串被 R 视为负值?是否有任何特定字符将字符串变为负值?如果是这样,我怎么能清理字符串向量不被视为负数?
这只是一个字母排序顺序。
"b" < 0
### [1] FALSE
"?" < 0
## [1] TRUE
与这些相比如何"0";字母排序 as0被转换为character. 相似地:
"hello" > "goodbye"
## [1] TRUE
是否有可能,您的 string_1 实际上不是由问号字符组成,而是由一些不可打印的字符组成,其中第一个字符的 ascii 值 < 48 ('0')?
因为我的简短实验表明,R 将 0 提升为“0”,然后对 2 个字符串进行字典比较。
"4aaaa" < 5
# [1] TRUE
"6bbbb" < 5
# [1] FALSE
0 并不特殊,因为字符串不是数字。