应用函数将数据帧行转换为向量

时间:2018-04-09 14:08:15

标签: r vectorization lapply sapply

我有一个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)

2 个答案:

答案 0 :(得分:0)

  1. 您的功能是矩阵产品吗?

  2. 您的数据只是数字值吗?

  3. 然后你只需要矩阵和矢量之间的矩阵乘积:

    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