2016-05-30 4 views
1

文章内のベクトルから値を出力したい。しかし、このベクトルには4つの要素が含まれているため、4つの線に広がる可能性があります。行を返さないように文中のベクトルを出力する方法

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 

しかし、私はこの

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

のようなものは、これを実行することが可能ですたい:これは私が持っているものでしょうか?また、ベクトルには常に4つの要素が含まれるわけではありません。私は3または10の要素を持っている場合、それは動作するはずです。

これが動作していません。

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

'toString(paste(" and yo [length(yo)])) ')を試してください。これはオックスフォードカンマを使用します。私はそうではない。 –

+0

オックスフォードのカンマのための親指! –

答えて

4

あなたは最後の部分を取得するためにpaste()toString()を使用することができます。私はまた、

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

はだから今、私たちはただ paste()呼び出しに xを挿入することができます...良い測定のためのオックスフォードコンマを使用しています。

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

あなたは持っているpaste()collapseオプションで:

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

コンマの代わりに自動的に最後の値の前に "and"を追加できますか? –

関連する問題