Dopełnianie i wyrównywanie ciągów
Używaj formatC() i format() do wyświetlania tekstu o stałej szerokości i wyrównanego tekstu.
Dopełnianie i wyrównywanie ciągów to bezpłatna lekcja R Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej R Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs R Academy zawiera 4 lekcji w sumie.
Dlaczego dopełnianie ciągów znaków ma znaczenie
Wyjście o stałej szerokości jest niezbędne w tabelach tekstowych, plikach dziennika i raportach. R udostępnia funkcje formatC() i format() do dopełniania wartości do stałej szerokości, dzięki czemu kolumny są prawidłowo wyrównane w wyświetlaczach monospace.
# Unformatted: columns misalign
cat('Alice 85\n')
cat('Bob 9200\n')
# Padded: columns align
cat(formatC('Alice', width = 10), formatC(85, width = 6), '\n')
cat(formatC('Bob', width = 10), formatC(9200, width = 6), '\n')formatC() — Dopełnianie z wyrównaniem do prawej
formatC(x, width = n) dopełnia wartość do szerokości co najmniej n znaków, domyślnie wyrównując ją do prawej. Spacje są dodawane z lewej strony. Działa to zarówno dla liczb, jak i ciągów znaków.
formatC('hi', width = 10)
formatC(42, width = 10)
formatC(3.14, width = 10)formatC() — Wyrównanie do lewej za pomocą flag
Argument flag = '-' przełącza wyrównanie do lewej i dopełnia prawą stronę spacjami. Jest to idealne rozwiązanie dla etykiet tekstowych w kolumnach tabel, gdy wartości mają zaczynać się przy lewej krawędzi.
items <- c('Pen', 'Notebook', 'Stapler')
prices <- c(1.5, 4.99, 7.25)
for (i in seq_along(items)) {
cat(formatC(items[i], width = 12, flag = '-'),
formatC(prices[i], format = 'f', digits = 2, width = 8),
'\n')
}formatC() z formatami liczbowymi
formatC() obsługuje kody formatów: 'f' dla stałej liczby miejsc dziesiętnych, 'e' dla notacji naukowej, 'g' dla krótszego z tych dwóch formatów oraz 'd' dla liczb całkowitych. Argument digits określa precyzję.
x <- 12345.6789
formatC(x, format = 'f', digits = 2)
formatC(x, format = 'e', digits = 3)
formatC(x, format = 'g', digits = 5)
formatC(42L, format = 'd', width = 8)format() — Wyrównywanie w Base R
format(x, width = n, justify = 'left'/'right'/'centre') to generyczna funkcja wyrównywania. Działa na dowolnym obiekcie R i zwraca wektor znakowy z ciągami o jednakowej szerokości. Domyślne wyrównanie liczb jest prawe, a ciągów znaków — lewe.
words <- c('cat', 'elephant', 'ox')
format(words, width = 10)
format(words, width = 10, justify = 'right')format() do określania precyzji liczb
format() kontroluje również liczbę miejsc dziesiętnych za pomocą nsmall (minimalna liczba cyfr po przecinku) oraz separator tysięcy za pomocą big.mark. Argumenty te są idealne do wyświetlania danych finansowych.
format(1234567.8, big.mark = ',', nsmall = 2)
format(0.1, nsmall = 4)
format(c(1.5, 100, 0.005), nsmall = 3)strrep() — Powtarzanie ciągów znaków
strrep(x, times) powtarza ciąg znaków określoną liczbę razy. Użyj go do tworzenia linii separatorów, ciągów dopełniających lub elementów dekoracyjnych bez ręcznego łączenia znaków.
strrep('-', 40)
strrep('=-', 20)
strrep(c('ab', 'cd'), c(3, 2))
# Draw a simple table border
cat(strrep('=', 30), '\n')Budowanie tabeli tekstowej o stałej szerokości
Połącz formatC() z cat() i strrep(), aby zbudować przejrzystą tabelę tekstową. Ten schemat jest często stosowany w narzędziach CLI i plikach dziennika.
header <- paste0(formatC('Name', width=12,flag='-'),
formatC('Score', width=8,flag='-'),
formatC('Grade', width=8,flag='-'))
cat(header, '\n')
cat(strrep('-', 28), '\n')
row1 <- paste0(formatC('Alice', width=12,flag='-'),
formatC(92,width=8),formatC('A',width=8,flag='-'))
cat(row1, '\n')formatC() a sprintf() przy dopełnianiu
Zarówno formatC(), jak i sprintf() mogą tworzyć dopełnione wyjście. sprintf() jest bardziej zwięzłe w prostych przypadkach, natomiast formatC() oferuje większą elastyczność przy stosowaniu tego samego formatowania do całego wektora.
x <- 42
# sprintf approach
sprintf('%10d', x)
sprintf('%-10s', 'hello')
# formatC approach
formatC(x, width = 10)
formatC('hello', width = 10, flag = '-')Kontrolowanie notacji naukowej
formatC(x, format='e', digits=n) lub options(scipen=999) kontroluje moment, w którym R przełącza się na notację naukową. Opcja scipen jest karą; większe wartości przez dłuższy czas zapobiegają użyciu notacji naukowej.
# Default scipen
print(0.0001234)
print(1234567890)
# Force scientific
formatC(0.0001234, format = 'e', digits = 3)
# Suppress scientific globally
old <- options(scipen = 999)
print(0.0001234)
options(old)Praktyka: dopełnianie identyfikatorów i etykiet
Często potrzebne są identyfikatory dopełnione zerami lub etykiety dopełnione z lewej strony w raportach. formatC() obsługuje oba przypadki: użyj flag = '0' do dopełniania liczb zerami oraz flag = '-' do wyrównywania ciągów znaków do lewej.
ids <- c(1, 12, 123)
names <- c('Alice', 'Bob', 'Carol')
scores <- c(88.5, 91.0, 76.25)
for (i in seq_along(ids)) {
cat(formatC(ids[i], width=5, format='d', flag='0'),
formatC(names[i], width=10, flag='-'),
formatC(scores[i], width=8, format='f', digits=2),
'\n')
}Szybkie sprawdzenie
Który argument funkcji formatC() wyrównuje wyjście do lewej w określonej szerokości?
Dopełnianie i wyrównywanie: najważniejsze informacje
Najważniejsze informacje o dopełnianiu i wyrównywaniu ciągów znaków:
formatC(x, width=n)dopełnia do szerokości z prawej strony;flag='-'wyrównuje do lewejformatC(x, format='f', digits=2)służy do stałej liczby miejsc dziesiętnych;'e'do notacji naukowejformat(x, justify='left'/'right'/'centre')służy do ogólnego wyrównywaniaformat(x, big.mark=',', nsmall=2)służy do separatorów tysięcy i końcowych miejsc dziesiętnychstrrep(s, n)powtarza ciąg znaków n razy — świetnie nadaje się do linii separatorów- Połącz te funkcje z
cat(), aby tworzyć tekstowe tabele
cat(strrep('=', 30), '\n')
cat(formatC('Item', width=12, flag='-'),
formatC('Price', width=10), '\n')
cat(strrep('-', 30), '\n')
cat(formatC('Apple', width=12, flag='-'),
formatC(1.99, width=10, format='f', digits=2), '\n')Często zadawane pytania
Czy lekcja „Dopełnianie i wyrównywanie ciągów” jest bezpłatna?
Tak — pełny tekst „Dopełnianie i wyrównywanie ciągów” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu R Academy, przejdź na CoddyKit PRO. Kurs R Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Dopełnianie i wyrównywanie ciągów”?
Używaj formatC() i format() do wyświetlania tekstu o stałej szerokości i wyrównanego tekstu. Ćwiczysz R Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć R Academy?
Nie wymagamy żadnego doświadczenia. R Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Dopełnianie i wyrównywanie ciągów”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji R Academy?
Tak. Każda lekcja R Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Budowanie ciągów za pomocą paste() i paste0()
- Formatowane wyjście za pomocą sprintf()
- Wyświetlanie danych za pomocą cat() i print()
- Dopełnianie i wyrównywanie ciągów