我有一个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)
答案 0 :(得分:0)
您的功能是矩阵产品吗?
您的数据只是数字值吗?
然后你只需要矩阵和矢量之间的矩阵乘积:
as.matrix(df) %*% my.constant
如果你想要一个向量而不是一列矩阵,可能会使用drop()
。
答案 1 :(得分:-1)
看看这是否有帮助......
id<-c("A", "B", "C")
v1<-c(10, 4, 9)
df<-data.frame(id, v1)
result<-unlist(lapply(df$v1, function(x){
x+1
}))
result