【发布时间】:2018-04-09 14:08:15
【问题描述】:
我有一个尺寸为 12665x784 的数据框,我需要在每一行上调用一个函数(此函数需要来自数据框的 1x784 输入和一个相同大小的常量)并将结果存储在另一个向量中。使用for循环的代码如下所示:
sample <- 1:20
my.constant <- 1:5
dim(sample) <- c(4, 5)
df <- as.data.frame(sample)
my.function <- function (x, y){
y <- as.matrix(y)
x <- as.matrix(x)
return(x%*%y)
}
result <- c()
for (row in 1:nrow(df)) {
result<- c(result, my.function(df[row, ], my.constant))
}
我尝试了以下方法,但没有奏效:
result <- sapply(lapply(df, as.vector), my.function, my.constant)
【问题讨论】:
-
请阅读有关how to ask a good question 的信息以及如何提供reproducible example。这将使其他人更容易帮助您。
-
你可以
?apply -
@Jaap,我编辑了问题以提供可重现的示例。对此感到抱歉。
-
as.matrix(df) %*% my.constant或c(as.matrix(df) %*% my.constant)
标签: r vectorization lapply sapply