我正在尝试使用 R 中的 for 循环编译来自多个文件的数据。我想将所有数据放入一个表中。下面的计算只是一个例子。
library(reshape)
dat1 <- data.frame("Specimen" = paste("sp", 1:10, sep=""), "Density_1" = rnorm(10,4,2), "Density_2" = rnorm(10,4,2), "Density_3" = rnorm(10,4,2))
dat2 <- data.frame("Specimen" = paste("fg", 1:10, sep=""), "Density_1" = rnorm(10,4,2), "Density_2" = rnorm(10,4,2))
dat <- c("dat1", "dat2")
for(i in 1:length(dat)){
data <- get(dat[i])
melt.data <- melt(data, id = 1)
assign(paste(dat[i], "tbl", sep=""), cast(melt.data, ~ variable, mean))
}
rbind(dat1tbl, dat2tbl)
将额外的列添加到 dat2 中的最流畅的方法是什么?我想获得相同的列名(在这种情况下为“Density_3”)并用零填充它,如果它不存在的话。假设我有大约 100 个表,列数(Density_1、2、3 等)在 5 到 6 之间变化。
我尝试了以下操作,但没有成功:
if(names(data) %in% "Density_3" == FALSE){
dat.all$Density_3 <- 0
} else {
dat.all$Density_3 <- dat.all$Density3}
另一个:有没有一种平滑的方法来 rbind() 表?似乎 rbind(get(dat)) 不起作用。