我的数据集看起来像这样,我有一个数据列表。使用lapply将函数应用于列表中的多个数据框时出现错误消息。
Plot_ID Canopy_infection_rate DAI
1 YO01 5 7
2 YO01 8 14
3 YO01 10 21
我想要做的是将一个名为“audpc_Canopyinfactionrate”的函数应用于数据框列表。
然而,当我运行lapply,我得到一个错误如下:
Error in FUN(X[[i]], ...) : argument "DAI" is missing, with no default
我检查了我的列表,我的数据不会偏移列。
有谁知道它有什么问题吗?由于
这里是我的代码部分:
#Read files in to list
for(i in 1:length(files)) {
lst[[i]] <- read.delim(files[i], header = TRUE, sep=" ")
}
#Apply a function to the list
densities <- list()
densities<- lapply(lst, audpc_Canopyinfactionrate)
#canopy infection rate
audpc_Canopyinfactionrate <- function(Canopy_infection_rate,DAI){
n <- length(DAI)
meanvec <- matrix(-1,(n-1))
intvec <- matrix(-1,(n-1))
for(i in 1:(n-1)){
meanvec[i] <- mean(c(Canopy_infection_rate[i],
Canopy_infection_rate[i+1]))
intvec[i] <- DAI[i+1] - DAI[i]
}
infprod <- meanvec * intvec
sum(infprod)
}
您没有为'audpc_Canopyinfactionrate()'函数的'DAI ='参数指定一个值。因此,错误消息:*参数“DAI”丢失,没有默认*。实际上,它看起来并不像你已经传递了该函数的任何参数。 – thelatemail
谢谢。这实际上是来自农业的功能。如果我像这样运行单个数据框:audpc_Canopyinfactionrate(X17YO1001 $'Canopy_infection_rate',X17YO1001 $'DAI')。它工作正常。 – Helen
功能的来源在这里没有什么不同,我不认为。你基本上完成了'f < - function(x,y)x + y; lapply(1:3,f)' - 您需要将所有必需的参数传递给函数以避免错误 - f < - function(x,y)x + y;例如,lapply(1:3,f,y = 2:4)。 – thelatemail