[解決済み] Rで空のベクトルに値を追加する?
2022-05-08 20:36:23
質問
Rを勉強しているのですが、リストに追加する方法がわかりません。
もしこれがPythonだったら......。
#Python
vector = []
values = ['a','b','c','d','e','f','g']
for i in range(0,len(values)):
vector.append(values[i])
Rでこれを行うにはどうすればよいのでしょうか?
#R Programming
> vector = c()
> values = c('a','b','c','d','e','f','g')
> for (i in 1:length(values))
+ #append value[i] to empty vector
解決方法は?
このため、多くの人が「Rは遅い」「Rループは避けるべき」と言います。
として ブロディG コメントで言及されているように、必要な長さのベクトルを事前に確保し、ループ内で要素の値を設定する方がはるかによいです。
ベクターに値を追加する方法をいくつか紹介します。 いずれも推奨されません。
ループ内のベクトルへの加算
# one way
for (i in 1:length(values))
vector[i] <- values[i]
# another way
for (i in 1:length(values))
vector <- c(vector, values[i])
# yet another way?!?
for (v in values)
vector <- c(vector, v)
# ... more ways
help("append")
は、あなたの質問に答え、この質問を書くのにかかった時間を節約することができました(ただし、悪い習慣を身につけることになります);-)。
なお
vector <- c()
は空のベクトルではありません。
NULL
. 空の文字ベクトルが必要な場合は
vector <- character()
.
ループする前にベクターをあらかじめ確保する
もし、あなたが どうしても を使用する場合は、ループの前にベクトル全体をあらかじめ割り当てておく必要があります。 これは、大きなベクトルでは加算よりもはるかに高速になります。
set.seed(21)
values <- sample(letters, 1e4, TRUE)
vector <- character(0)
# slow
system.time( for (i in 1:length(values)) vector[i] <- values[i] )
# user system elapsed
# 0.340 0.000 0.343
vector <- character(length(values))
# fast(er)
system.time( for (i in 1:length(values)) vector[i] <- values[i] )
# user system elapsed
# 0.024 0.000 0.023
関連
-
[解決済み] Rの%*%の意味 [重複]について
-
[解決済み] リストが空かどうかを確認するにはどうすればよいですか?
-
[解決済み] Pythonのリストメソッドであるappendとextendの違いは何ですか?
-
[解決済み] ファイルへの追記はどのように行うのですか?
-
[解決済み] Bashで標準出力と標準エラーの両方をファイルにリダイレクトして追記する方法
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] グループ化関数(tapply、by、aggregate)と*applyファミリ
-
[解決済み] リストに値が存在するかどうかを確認する最速の方法
-
[解決済み】配列に何かを追加する方法は?
-
[解決済み】Pythonでリストに複数の値を追加する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン