Это полное переписывание моего первоначального вопроса в попытке прояснить его и сделать его как можно более ответственным.Моя цель - написать функцию, которая принимает строку в качестве входных данных и возвращает содержащуюся в ней информацию в табличном формате.Вот два примера строк символов, с которыми столкнется функция:
s1 <- " 9 9875 Γεωργίου Άγγελος Δημήτρης ΑΒ/Γ Π/Π Β 00:54:05 167***\r"
s2 <- " 10 8954F Smith John ΔΕΖ N ΔΕΝ ΕΚΚΙΝΗΣΕ 0\r"
(Для тех, кто читал мой оригинальный вопрос, для простоты это меньшие строки.)
The требуемый вывод будет:
Rank Code Name Club Class Time Points
9 9875 Γεωργίου Άγγελος Δημήτρης ΑΒ/Γ Π/Π Β 00:54:05 167
10 8954F Smith John ΔΕΖ N ΔΕΝ ΕΚΚΙΝΗΣΕ 0
Мне удалось разбить строку в зависимости от того, где есть пробел, используя:
strsplit(s1, " ")[[1]][strsplit(s1, " ")[[1]] != ""]
хотя более элегантное решение было дано Г. Гротендиком в комментариях ниже, используя:
unlist(strsplit(trimws(s1), " +"))
Это приводит к
"9" "9875" "Γεωργίου" "Άγγελος" "Δημήτρης" "ΑΒ/Γ" "Π/Π" "Β" "00:54:05" "167***\r"
Тем не менее, это все еще проблематично, так как "Γεωργίου" "Άγγελος"
и "Δημήτρης"
должны быть объединены в "Γεωργίου Άγγελος Δημήτρης"
(обратите внимание, что число элементов может быть два ИЛИ три), и то же самое относится к "Π/Π" "Β"
, который должен быть объединен в "Π/Π Β"
.
Вопрос
Как я могу использовать дополнительную информацию, которая у меня есть, а именно:
- Порядок элементов всегда будетбыть таким же
- Данные
Name
будут состоять из двух или трехds - Данные
Club
(т. е. ΑΒ/Γ
в s1
и ΔΕΖ
в s2
) будут взяты из предварительно определенного списка клубов (например, хранятся в символьном векторе с именем * 1050).*) - Данные
Class
(т. Е. Π/Π Β
в s1
и N
в s2
) будут взяты из предварительно определенного списка классов (например, хранятся в символьном векторе с именем sClass
) - Данные
Points
всегда будут содержать "\ r" и не будут содержать пробелов.
для получения требуемого результата выше?