我正在尝试编写一些迭代数据框列表的代码,向每个代码添加一个新列,该列包含与旧列相同的值但移位为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的专家。
谢谢!
答案 0 :(得分:3)
您的代码是R
中应避免的内容集中for
或更多属性xxapply系列时,请不要使用lapply
。 lapply
将为您完成。$
。您应该使用[
运算符我将如何做到这一点:
lapply(listOfDataFrames, function(DX){
## I assume that your DX has and "oldColum" variable
transform(DX,newColumn =c(NA,head(oldColumn,-1))
})