【问题标题】:How to assign new values from lapply to new column in dataframes in list如何将 lapply 中的新值分配给列表中数据框中的新列
【发布时间】:2015-03-02 22:17:40
【问题描述】:

我有一个数据框列表。我想对数据框的列执行操作,然后在数据框中创建一个新列,并生成新列。

a <- data.frame(c(1,2,3), c(2,3,4))
b <- data.frame(c(7,8,9), c(5,6,2))
l <- list(a, b)
lapply(l, function(x) x[,2]*2)

我想要将4 6 810 12 4 分别分配给第一个和第二个数据帧的第三列。

这似乎不起作用:

lapply(l, function(x) x[,2]*2 -> x$new)

【问题讨论】:

  • 你要返回数据框:lapply(l, function(x) { x[,2]*2 -&gt; x$new; x }).
  • @lukeA 你能澄清一下 {} 的语法吗?
  • 唯一与您不同的是return(x) - 或简称:x。由于该函数不仅包含一个命令,而且包含两个(由; 或换行符分隔),因此您必须将其包装在{...} 中。 x 返回您添加new 后的数据框。
  • 知道了!现在我可以将其分配回l 并保持良好状态。谢谢!

标签: r dataframe lapply


【解决方案1】:

您可以使用cbind 将新列添加到列表中的数据框:

lapply(l, function(x) cbind(x, x[,2]*2))
# [[1]]
#   c.1..2..3. c.2..3..4. x[, 2] * 2
# 1          1          2          4
# 2          2          3          6
# 3          3          4          8
# 
# [[2]]
#   c.7..8..9. c.5..6..2. x[, 2] * 2
# 1          7          5         10
# 2          8          6         12
# 3          9          2          4

【讨论】:

    猜你喜欢
    • 2021-07-05
    • 1970-01-01
    • 1970-01-01
    • 2020-12-30
    • 2018-06-12
    • 2020-05-23
    • 1970-01-01
    • 2016-05-20
    • 1970-01-01
    相关资源
    最近更新 更多