一連のデータを処理しています。たとえば、nrow = 500 & ncol = 300です。ループを使用して正の値をフィルタリングして新しいテーブルに出力する
これは単なる例のためのものである:
V211 V212 V213 V214 V215 V216
[1,] 2.6088731 2.5531749 2.6017147 2.6124385 2.7156729 2.7897892
[2,] 1.4816736 0.9634576 0.9346004 0.9999343 -1.1096868 1.0848002
[3,] 1.1547304 -0.9052018 0.9036510 0.8504258 0.8382223 0.9237510
[4,] 1.0049771 0.9032115 0.8538077 -0.7911187 0.8244491 0.9172450
[5,] 0.9888954 0.8589149 0.7850069 0.6574331 0.7917890 0.7667152
[6,] -0.9577423 0.7662278 0.7767129 0.5639352 0.7559162 0.7118414
各列は、正と負の数を有しています。私がしたいのは、各列の正数をフィルタリングし、それらの数値を新しい行列に書き込むことです。
- 読み取り.CSVデータを "データ"
- 新しい行列 "新しい" マトリックスを作成する(0500300)
を使用してループ
for (i in 1:300) {a=data[which(data[,i]>0)] new[,i]=print(a)}
問題が発生しました:
ではなく、データ自体(例)のデータの位置のみを示している:
[,238] [,239] [,240] [,241] [,242] [,243] [,244] [,245] [,246]
[1,] 1 1 1 1 1 1 1 1 1
[2,] 2 2 2 2 2 2 2 2 2
[3,] 3 3 3 3 3 3 3 3 3
[4,] 4 4 4 4 4 4 4 4 4
[5,] 5 5 5 5 5 5 5 5 5
[6,] 6 6 6 6 6 6 6 6 6
iは別の可能な解決策を探してきたが、私は、各列のヘッダを有する大部分のデータを見つけたもの。私にはシリーズがたくさんあるので、ひとつずつ名前を付けるには長い時間が必要です。
私にいくつかアドバイスを残してください!おかげ
すべての列で肯定エントリの数が等しくないため、結果は行列にはなりません。また、 'for'ループはここでは最適なツールではありません。 – Roland
または、負の値を「NA」に設定するだけですか? – Roland
は負の値をNAに設定することをお勧めします。どうすればいい?ありがとう@ローランド – beboo23