У меня есть вектор символов, и я хочу убедиться, что все элементы вектора имеют одинаковую длину. Поэтому я заполняю короткие элементы пробелами, например:
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). Как я могу это исправить?
EDIT:
Обратите внимание, я не ищу исправить вывод nchar, потому что это правильно. Проблема в том, что sprintf теряет умлаут.
РЕДАКТИРОВАТЬ: обновление R, изменено на локали DWins - без изменений вообще. Но:
vec2 <- c("fjdlksa01dada","rauü","sjklf")
Encoding(vec2)
# returns
[1] "unknown" "UTF-8" "unknown"
странно.