我有这样列出的数据集:
.
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 (我不完全确定这是正确的操作)。也许我没有找对地方。任何帮助将不胜感激。
克克罗斯