【发布时间】:2019-10-12 06:59:14
【问题描述】:
我编写了一个函数,用于从大矩阵(“c.mat”)中为 data.frame(“df.1”)中的每一行提取数据。 data.frame 中有一个索引行(“df.1$hour”),对应于矩阵中的相关列。矩阵和 data.frame 之间的行数相等,因此函数运行:
assignUV.FUN <- function(df, mat){
num=df$hour
value = mat[as.numeric(rownames(df)),num]
return(value)
}
很简单。但是,当使用 apply 为每一行运行时:
df.1 <- data.frame(hour= round(runif(10,1,100)), x = seq(1,10, length=10))
c.mat <- matrix(runif(1000,1,5), nrow=10)
try <- apply(df.1, 1, assignUV.FUN, mat = c.mat, df=df.1)
我得到错误:
Error in FUN(newX[, i], ...) : unused argument (newX[, i])
我确定这里存在冲突,我两次调用 data.frame,一次从 assignUV.FUN 函数内部,一次使用 apply,但我不知道为什么这不起作用。
有什么想法吗?如果我只在一行上运行它就可以正常工作:
assignUV.FUN(df = df.1[1,], mat=c.mat)
【问题讨论】: