Czy istnieje sposób drukowania tekstu i treści zmiennych w tym samym wierszu? Na przykład,
wd <- getwd()
print("Current working dir: ", wd)
Nie mogłem znaleźć niczego na temat składni, która by mi na to pozwoliła.
Czy istnieje sposób drukowania tekstu i treści zmiennych w tym samym wierszu? Na przykład,
wd <- getwd()
print("Current working dir: ", wd)
Nie mogłem znaleźć niczego na temat składni, która by mi na to pozwoliła.
Odpowiedzi:
Możesz używać paste
zprint
print(paste0("Current working dir: ", wd))
lub cat
cat("Current working dir: ", wd)
cat()
otrzymuję NULL
na końcu :(
print(cat("test", var))
powinno byćcat("test", var)
{klej} oferuje znacznie lepszą interpolację łańcuchów, patrz moja inna odpowiedź . Ponadto, jak słusznie wspomina Dainis,
sprintf()
nie jest bez problemów.
Istnieją również sprintf()
:
sprintf("Current working dir: %s", wd)
Aby wydrukować na wyjściu konsoli, użyj cat()
lub message()
:
cat(sprintf("Current working dir: %s\n", wd))
message(sprintf("Current working dir: %s\n", wd))
sprintf
nie drukuje, po prostu formatuje ciąg. Coś takiego jak print (sprintf (...)) jest konieczne w skryptach.
Lub używając message
message("Current working dir: ", wd)
Odpowiedź @ agstudy jest tutaj bardziej odpowiednia
Najłatwiejszym sposobem na to jest użycie paste()
> paste("Today is", date())
[1] "Today is Sat Feb 21 15:25:18 2015"
paste0()
spowodowałoby:
> paste0("Today is", date())
[1] "Today isSat Feb 21 15:30:46 2015"
Zauważ, że nie ma domyślnego separatora między ciągiem a x. Użycie spacji na końcu ciągu to szybka poprawka:
> paste0("Today is ", date())
[1] "Today is Sat Feb 21 15:32:17 2015"
Następnie połącz dowolną funkcję z print()
> print(paste("This is", date()))
[1] "This is Sat Feb 21 15:34:23 2015"
Lub
> print(paste0("This is ", date()))
[1] "This is Sat Feb 21 15:34:56 2015"
Jak stwierdzili inni użytkownicy, możesz także użyć cat()
Pakiet {glue} oferuje interpolację ciągów. W tym przykładzie {wd}
jest podstawiony zawartością zmiennej. Obsługiwane są również złożone wyrażenia.
library(glue)
wd <- getwd()
glue("Current working dir: {wd}")
#> Current working dir: /tmp/RtmpteMv88/reprex46156826ee8c
Utworzono 2019-05-13 przez pakiet reprezentx (v0.2.1)
Zwróć uwagę, że wydruk nie zawiera [1]
artefaktów i "
cudzysłowów, dla których używane są inne odpowiedzi cat()
.
Jak powiedzieli inni użytkownicy, cat () jest prawdopodobnie najlepszą opcją.
@krlmlr zasugerował użycie sprintf () i jest to obecnie trzecia pozycja w rankingu. sprintf () nie jest dobrym pomysłem. Z dokumentacji R:
Łańcuch formatujący jest przekazywany w dół do funkcji sprintf systemu operacyjnego, a nieprawidłowe formaty mogą spowodować, że ten ostatni zawiesi proces R.
Nie ma dobrego powodu, aby używać sprintf () zamiast cat lub innych opcji.
sep = ''
lub dostaniesz dodatkowe miejsce.