次のようなループの結果を使用して数値ベクトルを作成したいと思います。
> for (i in 1:5) print(i+1)
[1] 2
[1] 3
[1] 4
[1] 5
[1] 6
'print'のない同じ式が何も返さないのは奇妙に思えます
> for (i in 1:5) i+1
>
誰かが説明/解決策を持っていますか?
これは標準的な動作です。数値ベクトルを作成したい場合は、
print
それを実行しません。
forループの式は、プリミティブ関数の引数です。for
?`for`
値セクションから
for、while、repeatは目に見えない形でNULLを返します。varをseqの最後に使用された要素に設定するか、長さがゼロの場合はNULLに設定します。
print
結果をコンソールに出力します。
for(i in 1:5) i + 1
i + 1
反復ごとに計算するだけで、何も返しません
何かを割り当てたい場合は、を使用して割り当てます<-
。assign
を使用すると、明示的なループを回避できますsapply
。これは、成長するベクトルの落とし穴を回避する必要があります
results <- sapply(1:5, function(i) { i + 1})
率直に言って、これよりも優れた解決策があるはずです
loopee <- function(x){
res <- vector(mode = "numeric", length(x))
for (i in 1:x) {res[i] <- i+1}
return(res)}
> loopee(5)
[1] 2 3 4 5 6