这可能是一件非常简单的事情,我很想念,但这让我很生气。
我已将.dbf文件导入到如下列表中:
library("foreign")
shp_files <- list.files("C:/Docs/DBfs", pattern = ".dbf", full.names = T)
shp <- lapply(shp_files, function(x){
read.dbf(x)
})
所有文件都有相同的列标题。我想应用一个函数,根据其他列的值将一个方程应用于一列。
为了论证而使解释更容易让我说我有A,B和C列,我想将它们加在一起计算D列。我可以看到我需要使用lapply来应用一个对所有文件起作用如下:
Col_func <- function(x){
X$D <- X$A + X$B +X$C
}
lapply(shp, Col_func)
这将返回R窗口中的值而不是列D.
我尝试了一些不同的组合,例如:
Col_func <- function(x){
X$A + X$B +X$C
}
shp$D <- lapply(shp, Col_func)
但似乎没有任何效果。
这可能是我很遗憾的事情,但我似乎无法找到答案(我可能会自己踢)。
谢谢
答案 0 :(得分:0)
我不能肯定地说,因为没有可重复的例子。特别是,提供shp
的一个小例子会很有帮助。但这可能有用:
Col_func <- function(X){
X$D <- X$A + X$B +X$C
return(X)
}
shp <- lapply(shp, Col_func)
此版本的Col_func
将D
列添加到给定的data.frame。 lapply
使其为列表中的每个data.frame执行此操作,并输出新的data.frames列表。