У меня есть вектор символов, и я хочу убедиться, что все элементы вектора имеют одинаковую длину. Поэтому я заполняю короткие элементы пробелами, например:
vec <- c("fjdlksa01dada","rau","sjklf")
x <- sprintf("%-15s", vec)
nchar(x)
# returns
[1] 15 15 15
как ответы на мои Предыдущий вопрос предложен. Это нормально, но, похоже, у него проблемы с умляутами. Например, если мой вектор выглядит так:
vec2 <- c("fjdlksa01dada","rauü","sjklf")
y <- sprintf("%-15s", vec)
nchar(y)
# returns
[1] 15 14 15
Я использую R в Mac OS X (10.6). Как я могу это исправить?
РЕДАКТИРОВАТЬ: обратите внимание, я не собираюсь исправлять вывод nchar, потому что он правильный. Проблема в том, что sprintf теряет умляут.
РЕДАКТИРОВАТЬ: обновить R, изменить локаль DWins - никаких изменений. Но:
vec2 <- c("fjdlksa01dada","rauü","sjklf")
Encoding(vec2)
# returns
[1] "unknown" "UTF-8" "unknown"
странный.
Encoding(vec2) <- "latin1"
. - person Richie Cotton   schedule 15.02.2012