【问题标题】:applying list of functions columns in data frame在数据框中应用函数列列表
【发布时间】:2014-03-20 13:59:35
【问题描述】:

我有 2 个变量,aba 可能非常大。 b 始终是一个函数向量,可以应用于数据框a 中的每一列。

a <- data.frame(col1=c(1, 2, 3), col2=c(4, 5, 6))
b <- c(as.double, function(x) {1+x})

所以我想要的结果是函数b[1] 应用于col1,b[2] 应用于col2,以此类推所有列。我觉得 lapply 应该在这里使用,但文档似乎说它只能有一个功能。我想我可以使用一个循环,但“矢量化”的方式会很好。

【问题讨论】:

  • 为什么需要循环?
  • 我猜mapply 可能有用。或许可以看到mapply(function(x, y) y(x), x = a, y = b) 之类的内容
  • RScriv,我本身需要循环,我的意思是可以这样做(对于每一列,在 b 中获取相应的索引函数并应用) - 但正如我所说,我更喜欢矢量化方法

标签: r apply


【解决方案1】:

这是一种方法:

results <- mapply(function(i,j) b[[i]](a[[j]]), i=1:length(b), j=1:length(a)) 

它给你:

> results
     [,1] [,2]
[1,]    1    5
[2,]    2    6
[3,]    3    7

【讨论】:

    猜你喜欢
    • 2017-12-17
    • 2020-04-24
    • 2023-03-24
    • 2021-03-20
    • 2017-04-22
    • 1970-01-01
    • 2015-04-19
    • 1970-01-01
    相关资源
    最近更新 更多