Tak, komentarze są za małe. W każdym razie @Dirk ma rację.
R nie trzeba mówić, że kod zaczyna się w następnej linii. Jest mądrzejszy niż Python ;-) i po prostu będzie czytać następny wiersz, gdy uzna, że instrukcja jest „nie zakończona”. Właściwie w twoim przypadku przeszedł również do następnej linii, ale R przyjmuje powrót jako znak, gdy jest umieszczony między "".
Pamiętaj, że musisz się upewnić, że kod nie jest skończony. Porównać
a <- 1 + 2
+ 3
z
a <- 1 + 2 +
3
Tak więc, rozkładając kod w wielu wierszach, musisz upewnić się, że R wie, że coś nadchodzi, albo przez:
- pozostawienie otwartego nawiasu lub
- zakończenie wiersza operatorem
Kiedy mówimy o strunach, to nadal działa, ale musisz być trochę ostrożny. Możesz otworzyć cudzysłowy, a R będzie czytać dalej, dopóki go nie zamkniesz. Ale każdy znak, w tym nowa linia, będzie postrzegany jako część ciągu:
x <- "This is a very
long string over two lines."
x
## [1] "This is a very\nlong string over two lines."
cat(x)
## This is a very
## long string over two lines.
To jest powód, dla którego w tym przypadku twój kod nie działał: ścieżka nie może zawierać znaku nowego wiersza ( \n
). Więc to też, dlaczego lepiej używać roztworu z paste()
lub paste0()
Dirk proponowane.