gpt4 book ai didi

r - 迭代地将新列添加到数据框列表中

转载 作者:行者123 更新时间:2023-12-02 21:15:35 26 4
gpt4 key购买 nike

我正在尝试编写一些迭代数据帧列表的代码,向每个数据帧添加一个新列,该新列包含与旧列相同的值,但移动了 1。该列中的第一个值将为 NA。下面是我的代码:

for(dataframe in 1:length(listOfDataFrames)){
newColumn <- c(NA)
for(row in 1:(nrow(listOfDataFrames[[dataframe]]) - 1)){
newColumn <- append(newColumn, listOfDataFrames[[dataframe]]$oldColumn[row])
}
mutate(listOfDataFrames[[i]], newColumn = newColumn)
}

但是,当我在 R 中执行此代码时,我在第一个数据帧上收到错误:

replacement has 894 rows, data has 895 

什么可能导致此错误?抱歉,如果这是一个简单的问题,我不是 R 方面的专家。

谢谢!

最佳答案

您的代码是在 R 中应该避免的事情的集中:

  1. 当您可以使用 lapply 或更通用的 xxapply 系列时,不要使用 for
  2. 不要在循环内附加 data.frame 的行。这非常低效。你应该预先分配。使用 lapply 将为您做到这一点。
  3. 请勿在函数内使用 $。您应该使用[运算符
  4. 当您可以以矢量化方式进行操作时,无需循环遍历 data.frame。

这里我将如何做到这一点:

lapply(listOfDataFrames, function(DX){

## I assume that your DX has and "oldColum" variable
transform(DX,newColumn =c(NA,head(oldColumn,-1))

})

关于r - 迭代地将新列添加到数据框列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30948924/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com