2016-05-30 12 views
1

Ich möchte Werte von einem Vektor in einem Satz drucken. Aber der Vektor enthält 4 Elemente, was die Antwort auf 4 Zeilen verteilt. Das ist, was ich habe:Wie man einen Vektor in einem Satz druckt, der zurückgehende Linien vermeidet

yo = c(2902, 2908, 2907, 2918) 

    cat(paste('You have', yo, 'number of individuals per species\n', sep = ' ')) 

You have 2902 number of individuals per species 
You have 2908 number of individuals per species 
You have 2907 number of individuals per species 
You have 2918 number of individuals per species 

Aber ich möchte so etwas wie dieses

You have 2902, 2908, 2907 and 2918 number of individuals per species 

Ist es möglich, dies zu tun? Außerdem enthält der Vektor nicht immer 4 Elemente. Wenn ich nur 3 oder 10 Elemente habe, sollte es funktionieren.

Dies funktioniert nicht:

cat(sprintf('You have %s number of individuals per species\n',yo)) 


    cat(paste('You have', unlist(yo), 'number of individuals per species\n', sep = ' ')) 
+2

Versuchen Sie 'toString (c (yo [-Länge (yo)], einfügen (" und ", yo [Länge (yo)])))'. Dies verwendet das Oxford-Komma. Ich schaue anders. –

+0

Daumen hoch für das Oxford Komma! –

Antwort

4

Sie toString() mit paste() verwenden können, den letzten Teil zu bekommen. Ich habe auch ein Oxford Komma für eine gute Maßnahme verwenden ...

x <- toString(c(yo[-length(yo)], paste("and", yo[length(yo)]))) 
x 
# [1] "2902, 2908, 2907, and 2918" 

So, jetzt können wir nur x in den paste() Anruf ein.

paste("You have", x, "number of individuals per species") 
# [1] "You have 2902, 2908, 2907, and 2918 number of individuals per species" 
4

Sie müssen paste() mit collapse Option:

paste('You have',paste(yo[1:(length(yo)-1)], collapse= ', '), 'and', yo[length(yo)], 'number of individuals per species\n') 
You have 2902, 2908, 2907 and 2918 number of individuals per species 
+0

können Sie ein "und" vor dem letzten Wert automatisch anstelle eines Kommas hinzufügen? –