Я не очень разбираюсь в R, но знаю достаточно много о нескольких других языках и у меня есть решение для этого, но я хочу знать, есть ли более эффективный способ, поскольку я планирую использовать его для больших списков. Я смотрел в Интернете несколько раз и безуспешно устал от разных вещей, этот ответ может быть ответом, но я не могу заставить его работать.
У меня есть список строк из внешнего файла, каждая из которых потенциально имеет разное количество символов в каждом элементе. Я хотел бы дополнить этот список (конечным пробелом), чтобы все элементы имели одинаковую длину. Я буду использовать "+" вместо пробела в примере для пояснения. Так
c(“dog”, “cat”, “mouse”, “hare”, “snake”)
станет
[1] “dog++”, “cat++", “mouse”, “hare+”, “snake”
То, что у меня есть, работает, но я думаю, что будет более эффективное и элегантное решение с использованием пасты, репродукции или аналогичного. Y мой список персонажей
# find max length of elements
maxY <- max(nchar(Y))
# size of padding to each element
Ydif <- max(nchar(Y)) - nchar(Y)
# pad each string element with the required amount of white space
for (l in 1:length(Ydif)) {
if (Ydif[l] > 0) {
Ypad[l] = strrep(" ", times=Ydif[l])
} else {
Ypad[l] = "" # if zero dont add padding
}
}
# combine the padding with the original list to get all the same length
paste0(Y,Ypad, collapse=NULL)