【问题标题】:apply function that takes row as an argument to each row in data.table将行作为参数的应用函数应用于 data.table 中的每一行
【发布时间】:2020-11-12 07:04:12
【问题描述】:

我有一个 data.table dt = structure(list(x = 1:3, y = 3:5), .Names = c("x", "y"), row.names = c(NA, -3L), class = c("data.table", "data.frame"))

另外,我有一个给定的函数,它以行和数据集作为参数。例如,让

function_sum <- function(i, dataset){
  x <- as.numeric(dataset[i,1])
  y <- as.numeric(dataset[i,2])
  x+y
}

我需要将此函数应用于我数据集中的每一行,但不知道该怎么做。

这行不通 dt[, function_sum(i=.SDrow, dataset=dt), by = seq_len(nrow(dt))]

【问题讨论】:

  • 为什么函数没有向量化?不能在函数外写一个向量化的函数和子集吗?

标签: r datatable


【解决方案1】:

使用您的function_sum() 函数:

sapply(1:nrow(dt), function(i) function_sum(i,dt))
#[1] 4 6 8

【讨论】:

    猜你喜欢
    • 2013-03-18
    • 1970-01-01
    • 2023-03-06
    • 2014-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-23
    相关资源
    最近更新 更多