【问题标题】:Creating new column of dataframe into global enviroment inside loop in R在R中的循环内将新的数据框列创建到全局环境中
【发布时间】:2019-07-08 17:19:08
【问题描述】:

所以我想获得一个新列,其中包含两个不同列的划分值。我正在尝试为多个 dfs 执行此操作。我知道循环在没有分配函数的情况下也能工作,但不幸的是它没有将它保存在全局环境中。

vect是一个有多个数据框的向量

for (i in vect) {
      i$new <- i[,2] / i[,3]
      print(i)
}

我正在寻找一种以可行的方式重写它的方法:

assign(i$new, i[,2] / i[,3],envir = .GlobalEnv)

【问题讨论】:

  • 请分享一些数据,以便人们解决问题。 lapply 可能会在这里提供一些额外的帮助。一般来说,你可以用 ctrl+k 格式化你的代码,这样可以使代码更具可读性

标签: r for-loop lapply


【解决方案1】:

您可以使用 lapply 将新列绑定到列表中的每个数据框中。

dfs <- list(df1 <- data.frame(x = c(1,2,3,4,5),
                              y = c(2,3,4,5,6)),
            df2 <- data.frame(x = c(5,6,7,8,9),
                              y = c(1,3,4,5,6)))

dfs <- lapply(dfs, function(d){
  new <- d$x/d$y
  cbind(d, new)} )

dfs

> dfs
[[1]]
  x y       new
1 1 2 0.5000000
2 2 3 0.6666667
3 3 4 0.7500000
4 4 5 0.8000000
5 5 6 0.8333333

[[2]]
  x y  new
1 5 1 5.00
2 6 3 2.00
3 7 4 1.75
4 8 5 1.60
5 9 6 1.50

【讨论】:

    猜你喜欢
    • 2022-11-22
    • 1970-01-01
    • 1970-01-01
    • 2020-07-24
    • 1970-01-01
    • 2022-11-02
    • 2020-01-06
    • 2018-11-11
    • 1970-01-01
    相关资源
    最近更新 更多