# テーブル形式のデータをデータフレーム形式のデータに変換する関数 as.df <- function(tb, drop=TRUE){ sp <- colnames(tb) stand <- rownames(tb) df <- NULL #dfの初期化 for (i in 1:length(stand)) { for (j in 1:length(sp)) { if (drop==FALSE | (tb[i,j] != 0 & !is.na(tb[i,j]))){ df <- c(df, stand[i]) df <- c(df, sp[j]) df <- c(df, tb[i,j]) } } } df <- matrix(df, ncol=3, byrow=TRUE) data.frame(df) } # 使用方法 library(vegan) #事前にパッケージveganのインストールが必要 data(dune) #砂丘データ(地点数20,種数30)の呼び出し as.df(dune) #既定値では、値が0のデータは出力しない as.df(dune, drop=FALSE) #drop=FALSEを指定すると、値が0のデータも出力