dポイントプレゼントキャンペーン実施中!

repやseqを使って

123456234563456456566

という数式を作りたいのですがどのように作れば良いでしょうか?

A 回答 (4件)

#1です。



前のご質問の
10^rep(0:4, each = 3) * c(1, 2, 5)
を含め、これってプログラミングの授業の問題ですか?

我々プログラマは、実際には、可読性を上げるためforループを使います。念のため。

unlist(Map({function(a) a:6}, 1:6))
など、何をやっているのやら、普通の人が見たら分かりませんからねえ。

頭の体操としては面白かったです。

あと、回答が気に入ったらベストアンサー付けて下さいね。
    • good
    • 0
この回答へのお礼

助かりました

ありがとうございます。
いろいろな方法があるんですね。
学校の先生が書いた模範解答はrev(7-sequence (1:6))でした。

お礼日時:2020/11/04 17:24

#1です。



もっと簡単なのを思いつきましたよ。repばっかり。

rep(1:6, 6)[rep(1:6, 6) > rep(0:5, each = 6)]

でも、1番目の投稿が最も自然な発想だと思います。
    • good
    • 1

#1です。



もしかしたら、どうしてもrep()かseq()を使わないと許してもらえないのかな。
では、こんなのはいかがでしょうか。
無理やり感がにじみ出ていますが、必然性はあります。

matrix(rep(1:6, 6), nrow = 6)[lower.tri(matrix(0, 6, 6), diag = T)]
    • good
    • 1

数値列を作りたいのですよね。



Reduceとのその仲間の関数を使えば良いです。
Mapを使ってやりました。

関数 function(x) x:6 のxに1~6を順に代入していく感じです。
結果はリスト形式で出てくるので、unlistでベクトルにします。

unlist(Map({function(a) a:6}, 1:6))
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!