Tôi đang cố gắng biên dịch dữ liệu từ một số tệp bằng cách sử dụng vòng lặp trong R. Tôi muốn lấy tất cả dữ liệu vào một bảng. Tính toán sau đây chỉ là một ví dụ.Vòng lặp R: Thêm một cột vào bảng nếu chưa tồn tại
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)
Cách tốt nhất để thêm cột bổ sung vào dat2 là gì? Tôi muốn nhận được cùng một tên cột ("Density_3" trong trường hợp này) và điền nó với số không, nếu nó không tồn tại. Giả sử rằng tôi có ~ 100 bảng với số lượng cột (Density_1, 2, 3 vv) thay đổi từ 5 đến 6.
tôi đã cố gắng sau, nhưng nó đã không làm việc:
if(names(data) %in% "Density_3" == FALSE){
dat.all$Density_3 <- 0
} else {
dat.all$Density_3 <- dat.all$Density3}
Một số khác: là có một cách trơn tru để rbind() các bảng? Dường như rbind (get (dat)) không hoạt động.
Không biết về lệnh rbind.fill(). Đó là cái tôi đang tìm kiếm. Cảm ơn! – Largh