【问题标题】:Apply a function returning a data frame to each row in a data frame将返回数据框的函数应用于数据框中的每一行
【发布时间】:2020-08-12 18:10:06
【问题描述】:

我有一个数据框d和一个函数f,它把数据框的每一行都返回一个数据框:

d <- data.frame(x=c(1,2,3),y=c(11,22,33))

f <- function(row){
...
return(df)
}

现在,我想将f 应用于d(当然是为了避免循环通过f(d[k,])。 apply 无法工作并将d 的行放在列表中并使用lapply 失败。 我该怎么办?

【问题讨论】:

  • 这能回答你的问题吗? R: apply-like function that returns a data frame?
  • apply(d, 1, f) 不起作用? lapply(asplit(d, 1), f) 怎么样?
  • @RonakShah 不,尽管f 对所有行(d[k,])单独运行良好,但我得到“$ 运算符对原子向量无效”

标签: r


【解决方案1】:

您没有在f 中显示您所拥有的内容,但基于 cmets,它是为数据帧编写的,因此应该可以:

lapply(split(d, seq_len(nrow(d))), f)

splitd 的每一行划分为 1 行数据帧,并使用 lapply 在每一行上应用函数 f

你也可以使用by

by(d, seq_len(nrow(d)), f)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-26
    • 2011-11-02
    • 1970-01-01
    • 2011-05-13
    • 2011-07-16
    • 2021-10-04
    • 1970-01-01
    相关资源
    最近更新 更多