R で少なくとも 6 つのループ ステップを実行したいと考えています。私のデータ セットは、1 つのフォルダーに格納された28 個のファイルです。各ファイルには 22 行 (21 個の個別のケースと列名用の 1 行) と次の列があります: Id、id、PC1、PC2….PC20。
私は次のことを意図しています:
- 各ファイルをデータ フレームとして R に読み込む
- 各データフレームの「Id」という名前の最初の列を削除します
各データ フレームを次のように配置します。
最初の列は「id」であり、
次の 10 列は、最初の 10 個の PC (PC1、PC2、…PC10) である必要があります。
- 「id」に従って各データフレームをソートします(データフレームは、個人とそれぞれのPCのスコアの順序が同じである必要があります)
- 可能なすべてのペアの組み合わせ (378 の組み合わせ) の中で、veganパッケージの抗議関数によってペアワイズ比較を実行します。
- 各ペアの比較結果を対称 (28*28) 行列に格納し、さらなる分析に使用します
現時点では、データのペアごとに手動で行うことができます (コードは以下にあります)。
## 1. step
## read files into R as a data frame
c_2d_hand_1a<-read.table("https://googledrive.com/host/0B90n5RdIvP6qbkNaUG1rTXN5OFE/PC scores, c_2d_hand-1a, Symmetric component.txt",header=T)
c_2d_hand_1b<-read.table("https://googledrive.com/host/0B90n5RdIvP6qbkNaUG1rTXN5OFE/PC scores, c_2d_hand-1b, Symmetric component.txt",header=T)
## 2. step
## delete first column named “Id” in the each data frame
c_2d_hand_1a[,1]<-NULL
c_2d_hand_1b[,1]<-NULL
## 3. step
## arrange each data frame that have 21 rows and 11 columns (id,PC1,PC2..PC10)
c_2d_hand_1a<-c_2d_hand_1a[,1:11]
c_2d_hand_1b<-c_2d_hand_1b[,1:11]
## 4. step
## sort each data frame according to “id”
c_2d_hand_1a<-c_2d_hand_1a[order(c_2d_hand_1a$id),]
c_2d_hand_1b<-c_2d_hand_1b[order(c_2d_hand_1b$id),]
## 5. step
## perform pairwise comparison by protest function
library(permute)
library(vegan)
c_2d_hand_1a_c_2d_hand_1b<-protest(c_2d_hand_1a[,2:ncol(c_2d_hand_1a)],c_2d_hand_1b[,2:ncol(c_2d_hand_1b)],permutations=10000)
summary(c_2d_hand_1a_c_2d_hand_1b)[2] ## or c_2d_hand_1a_c_2d_hand_1b[3]
私は R でのデータ処理/操作の初心者なので、自己学習スキルは、各データ セットのコードを入力し、その時点で各ペアワイズ比較を実行して、それぞれのステップを手動で実行するのに適しています。これらの 6 つの手順を 378 回実行する必要があるため、手動で入力するのは大変で時間がかかります。
ファイルをリストとしてインポートしようとして、いくつかの操作を試みましたが、うまくいきませんでした。具体的には、list.files() を使用して、「プローブ」と呼ばれるリストを作成しました。たとえば、プローブ[2]を使用して特定のデータフレームを選択できました。また、probe[2][1] などで列「Id」を評価し、probe[2][1]<-NULL で削除することもできます。しかし、for ループを使用しようとすると、行き詰まりました。