0
这是一个(无意义的)截断版本的R中的for-loop,用于计算某些多边形的土地使用情况。它很好地遍历数据,除非它应该使用plyr::rbind.fill()
将计算绑定到data.frame。我得到了期望的结果,但也有(相同数量的)其他不需要的列填充了NA值(我想它与列名有关)。rbind列表到for循环中的data.frame
agri_coverage <- data.frame(matrix(rnorm(3), nrow=1))
set.seed(23)
agri <- rnorm(10, 0.5)
land_use <- NULL
for (i in seq_along(agri)) {
name <- agri[i]
if (name > 1) {
wl <- as.list(unlist(agri_coverage[ ,1:3]))
} else {
wl <- as.list(rep(NA, 3))
}
land_use <- rbind.fill(land_use, data.frame(wl)) #combine output
}
什么是最好的功能/方法将这些列表合并为一个数据框,为什么这些额外的列产生?
我试过其他功能,如rbind()
,data.table::rbindlist()
没有成功。
'rbind.fill'(和它的dplyr后继'bind_rows')寻找同样的na mes为每个矢量对齐它们,而你的'NA's没有名字。如果你把'else'改成'wl < - as.list(setNames(rep(NA,3),names(agri_coverage)))',它就会起作用。更典型的基本方法是'do.call(rbind,lapply(agri,function(x){if(x> 1){agri_coverage} else {rep(NA,3)}}))' – alistaire
我正在想办法复杂化。感谢您的解释! – andrasz