【发布时间】:2017-11-29 11:51:24
【问题描述】:
我正在尝试将相同的函数应用于文件夹中的所有 csv 文件(相同的结构) - 基于“旧”列添加两个新列,将 0.05 添加到每个变量,然后以相同的名称保存它文件夹为 csv。应该很容易,这里有几个例子可以做到这一点,主要是使用 lapply,但是,我一直遇到错误:
Error in `$<-.data.frame`(`*tmp*`, "LAT", value = numeric(0)) : replacement has 0 rows, data has 3
这是我的代码:
my_files <- list.files(path="C:/PATH", pattern=".csv", full.names=T, recursive=FALSE)
add_col <- function(my_files) {
mpa <- read.csv(my_files, header=T)
mpa$LAT <- mpa$lat_bin + 0.05
mpa$LON <- mpa$lon_bin + 0.05
return(mpa)
write.csv(mpa,
append = FALSE,
quote = FALSE,
sep = ",",
row.names = FALSE,
col.names = TRUE)
}
我不确定如何最好地处理大量文件。
这是文件的一些示例代码
Df1 <- data.frame(lat_bin = c(50,40,70,6,8,4),lon_bin = (c(1,5,2,4,9,11)))
Df2 <- data.frame(lat_bin = c(66, 77, 82, 65, 88, 43),lon_bin = (c(2,3,4,5,11,51)))
Df3 <- data.frame(lat_bin = c(43,46,55,67,1,11),lon_bin = (c(7,6,5,9,11,15)))
write.csv(Df1, "data_1.csv", row.names=F)
write.csv(Df2, "data_2.csv", row.names=F)
write.csv(Df3, "data_3.csv", row.names=F)
【问题讨论】:
-
您能发布其中一个文件的示例吗?
-
另外,请添加您用于该任务的代码。这种错误本身并不是很有用。
-
您的
lapply电话在哪里?就其本身而言,发布的代码不应该做任何事情。 -
@Parfait,我知道
lapply可以用于它,但到目前为止我无法使其工作并且并不真正理解它 - 因此我尝试仅使用函数来完成它跨度> -
但是你在哪里调用这个函数呢?你只在这里分配它。产生错误的原因是什么?