R создать десятичные значения символа hex - PullRequest
1 голос
/ 18 февраля 2020

С помощью следующего кода я читаю текстовый файл и отображаю один столбец на экране.

externalData <- read.delim("testdata.txt", header = FALSE, sep = "@")

i = 1;
while(i < 11) {
  appel <- as.character(externalData[i,3,1])
  i = i + 1;
  print(appel)
}

Вывод выглядит так:

Я пытаюсь преобразовать эти значения из шестнадцатеричного в десятичное.

Я пробовал следующее:

strtoi(c(appel))

, но это не похоже на при работе, это только удаляет кавычки из первого и последнего и устанавливает все промежуточные значения как N / A (возможно, потому что в них есть буквы).

Ответы [ 2 ]

3 голосов
/ 18 февраля 2020

Вот 3 способа преобразования шестнадцатеричного (символа) в десятичное (цифра c).

x <- c("158308", "bb1787", "853f91")

# 1.
strtoi(x, base = 16L)

# 2.
as.integer(as.hexmode(x))

# 3.
as.integer(paste0("0x", x))
# more general edition:
# as.integer(ifelse(!grepl("^0x", x), paste0("0x", x), x))
2 голосов
/ 18 февраля 2020

С ?strtoi

Преобразуйте строки в целые числа в соответствии с заданной базой, используя функцию C strtol, или выберите подходящую базу, следуя правилам C.

Аргументы

x символьный вектор или что-то принудительное для этого с помощью as.character.

base целое число, которое от 2 до 36 включительно или ноль (по умолчанию).

1.Создайте воспроизводимый минимальный пример

appel <- c("158308", "d8db89")

2.Решение с использованием аргумента strtoi base:

strtoi(appel, base=16)

Возвращает:

[1]  1409800 14211977
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...