0Pricing
R Academy · Lekcja

Budowanie ciągów za pomocą paste() i paste0()

Łącz ciągi znaków z separatorami za pomocą paste i paste0.

Budowanie ciągów za pomocą paste() i paste0() to bezpłatna lekcja R Academy na CoddyKit. To lekcja 1 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.

Podstawy paste()

Funkcja paste() konwertuje swoje argumenty na ciągi znaków i łączy je za pomocą separatora. Domyślnie separatorem jest pojedyncza spacja ' '. Jest to najbardziej wszechstronna funkcja do tworzenia ciągów znaków w base R.

paste('Hello', 'World')
paste('User', 'ID', ':', 42)
paste('R', 'version', '4.3.1')

paste0() — skrót bez separatora

Funkcja paste0() jest równoważna wywołaniu paste(..., sep=''). Łączy ciągi znaków bez separatora między nimi. Jest to podstawowa funkcja używana podczas programowego tworzenia ścieżek plików, nazw kolumn lub adresów URL.

paste0('file_', 1:5, '.csv')
paste0('col_', c('a', 'b', 'c'))
paste0('/home/user/', 'data.csv')

Zmiana separatora za pomocą sep

Argument sep określa, co zostanie umieszczone między poszczególnymi argumentami. Można go używać do tworzenia wierszy CSV, ścieżek plików, ciągów dat lub dowolnych danych wyjściowych rozdzielanych separatorami.

# Hyphen-separated date
paste('2024', '05', '29', sep = '-')
# Slash-separated path
paste('home', 'user', 'docs', sep = '/')
# Comma-separated
paste('Alice', 'Bob', 'Carol', sep = ', ')

Wektoryzacja paste()

Funkcja paste() jest zwektoryzowana — gdy otrzymuje wektory, łączy elementy na odpowiadających sobie pozycjach (w razie potrzeby powtarzając krótsze wektory). Wynik ma długość równą długości najdłuższego wektora wejściowego.

labels <- c('Item', 'Item', 'Item')
numbers <- c(1, 2, 3)
paste(labels, numbers)
# Shorter form using recycling
paste('Item', 1:5)

Łączenie wektora w jeden ciąg znaków

Argument collapse łączy wszystkie elementy wynikowego wektora w jeden ciąg znaków, używając wartości collapse jako separatora między elementami. Bez collapse otrzymuje się wektor znakowy, a z nim — pojedynczy ciąg znaków.

fruits <- c('apple', 'banana', 'cherry')
# Without collapse: character vector of length 3
paste('I like', fruits)
# With collapse: single string
paste('I like', fruits, collapse = ' and ')

sep i collapse razem

W tym samym wywołaniu można użyć zarówno sep, jak i collapse. Najpierw sep łączy wektory argumentów element po elemencie, a następnie collapse łączy wynikowy wektor znaków w jeden ciąg.

first <- c('John', 'Jane', 'Bob')
last  <- c('Doe', 'Smith', 'Brown')
# sep joins first+last, collapse joins all three names
paste(first, last, sep = ' ', collapse = ', ')

paste0() do tworzenia nazw zmiennych

Funkcja paste0() jest często używana do programowego tworzenia nazw zmiennych lub kolumn, ścieżek plików i ciągów podobnych do SQL, bez zbędnych separatorów.

# Build column names
col_names <- paste0('Q', 1:5, '_score')
print(col_names)
# Build file paths
years <- 2020:2023
files <- paste0('data/report_', years, '.csv')
print(files)

Konwersja typów numerycznych w paste()

Funkcja paste() automatycznie konwertuje liczby, wartości logiczne i inne typy na ciągi znaków. Nie trzeba wcześniej wywoływać as.character() — funkcja paste() obsługuje to w sposób przezroczysty.

n <- 42
pi_val <- 3.14159
flag <- TRUE
paste('Count:', n)
paste('Pi =', pi_val)
paste('Active:', flag)
paste0('n=', n, ' pi=', round(pi_val, 2))

Tworzenie wierszy podobnych do CSV

Połączenie zwektoryzowanej funkcji paste() z collapse = ',' pozwala tworzyć proste ciągi wyjściowe w formacie CSV z ramki danych bez ładowania zewnętrznego pakietu.

names_vec  <- c('Alice', 'Bob', 'Carol')
scores_vec <- c(85, 92, 78)
rows <- paste(names_vec, scores_vec, sep = ',')
cat(paste(rows, collapse = '\n'))

Obsługa NA w paste()

W przeciwieństwie do wielu funkcji R funkcja paste() konwertuje NA na dosłowny ciąg znaków 'NA', zamiast propagować brakującą wartość. Jest to przydatne, ale może zaskoczyć osoby oczekujące cichej obsługi brakujących wartości.

x <- c('Hello', NA, 'World')
paste(x, '!')
# NA becomes the string 'NA'
result <- paste0('Value: ', NA)
print(result)
print(class(result))

Praktyczne schematy: paste() w raportach

Funkcja paste świetnie sprawdza się podczas generowania czytelnych dla człowieka ciągów raportów. Połączenie paste0(), round() i paste() z collapse pozwala tworzyć zdania podsumowujące na podstawie danych.

mean_score <- 83.7
n_students  <- 28
high_score  <- 99
msg <- paste0(
  'Class summary: ', n_students, ' students, ',
  'mean score ', round(mean_score, 1), ', ',
  'top score ', high_score, '.'
)
cat(msg)

Szybkie sprawdzenie

Do czego służy argument collapse w funkcji paste()?

paste() i paste0(): najważniejsze informacje

Najważniejsze informacje o paste() i paste0():

  • paste(a, b) łączy elementy spacją; paste0(a, b) łączy je bez separatora
  • sep określa ciąg znaków umieszczany między poszczególnymi argumentami
  • collapse redukuje wynikowy wektor do jednego ciągu znaków
  • Obie funkcje są zwektoryzowane i powtarzają krótsze argumenty
  • NA jest konwertowane na dosłowny ciąg znaków 'NA'
  • Liczby i wartości logiczne są automatycznie konwertowane na znaki
# sep vs collapse at a glance
x <- c('a', 'b', 'c')
y <- c(1, 2, 3)
cat('paste (sep=-)  :', paste(x, y, sep = '-'), '\n')
cat('paste (collapse):', paste(x, collapse = '+'), '\n')
cat('paste0          :', paste0(x, y), '\n')

Często zadawane pytania

Czy lekcja „Budowanie ciągów za pomocą paste() i paste0()” jest bezpłatna?

Tak — pełny tekst „Budowanie ciągów za pomocą paste() i paste0()” 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 „Budowanie ciągów za pomocą paste() i paste0()”?

Łącz ciągi znaków z separatorami za pomocą paste i paste0. Ć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 1 z 4.

Ile czasu zajmuje lekcja „Budowanie ciągów za pomocą paste() i paste0()”?

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

  1. Budowanie ciągów za pomocą paste() i paste0()
  2. Formatowane wyjście za pomocą sprintf()
  3. Wyświetlanie danych za pomocą cat() i print()
  4. Dopełnianie i wyrównywanie ciągów
← Powrót do R Academy