次のようにリストされているデータセットがあります。
.
data <- structure(list(group = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 2L,
2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L), .Label = c("I", "II", "III"), class = "factor"),
time = c(1L, 1L, 1L, 2L, 2L, 3L, 1L, 1L, 1L, 2L, 2L, 1L,
2L, 2L, 2L), species = structure(c(1L, 2L, 3L, 2L, 4L, 1L,
3L, 2L, 1L, 3L, 4L, 1L, 1L, 3L, 4L), .Label = c("a", "b",
"c", "d"), class = "factor")), .Names = c("group", "time",
"species"), class = "data.frame", row.names = c(NA, -15L))
head(data)
## group time species
## 1 I 1 a
## 2 I 1 b
## 3 I 1 c
## 4 I 2 b
## 5 I 2 d
## 6 I 3 a
同じ時間ブロックで共起する種の共起テーブルを作成しています。ここに例示するコードは、グループ I で見つかった種の共起表を作成します。
data2=subset(data,data$group=="I")
X =table(data2$species,data2$time)
X <- as.matrix(X)
out <- X %*% t(X)
write.table(out,"coocurrence_groupI.txt",sep="\t")
元のデータ セットには、実際には大量のグループがあります。それぞれをサブセット化してから .txt ファイルを作成するのは冗長すぎるようです。私の質問は、各グループ (例では I、II、および III) の共起テーブルを自動的に作成し、それぞれに異なる .txt ファイルを書き込むループ関数を作成するにはどうすればよいですか?
私はインターネットを精査しましたが、sapply を除いて、近いものは見つかりませんでした (これが正しい操作であるかどうかは完全にはわかりません)。たぶん、私は適切な場所を見ていませんでした。どんな助けでも大歓迎です。
カムクロス