В консоли, идти вперед и попробоватьПочему 1..99,999 == "1" .. "99,999" в R, но 100 000! = "100 000"?
> sum(sapply(1:99999, function(x) { x != as.character(x) }))
0
Для всех значений 1 через 99999, "1" == 1
, "2" == 2
..., 99999 == "99999"
являются TRUE
. Однако
> 100000 == "100000"
FALSE
Почему R имеет это странное поведение, и это ошибка? Каким будет обходной путь, например, проверить, действительно ли каждый элемент в символе атомного символа является числовым? Прямо сейчас я пытался проверить, x == as.numeric(x)
для каждого x
, но это не удается на некоторых наборах данных из-за вышеуказанной проблемы!
Нет, эта сумма равна нулю, а не «TRUE» ... – Frank
@JoshuaUlrich вы можете объяснить, как те, дубликаты? –
Для проблемы, описанной в последнем абзаце, вы можете «совместить» свой векторный вектор-символ с «1: 100000» (который является целым вектором): 'match (as.character (1: 100000), 1: 100000)' , – Frank