请原谅我试图在R中使用我的excel逻辑,但我似乎无法弄清楚这一点。在一个函数中,给定X,我试图找出它之前的行是否具有更大的值,或者不使用简单的逻辑。如果是的话,如果不是“否”,则在新列中显示为“是”。r - lapply,ifelse并试图在一列中比较行与前一行
这里是样本数据:
temp <- data
GetFUNC<- function(x){
temp <- cbind(temp, NewCol = ifelse(temp[2:nrow(temp),8] > temp[1:(nrow(temp)-1),8], "yes","no"))
write.csv(temp, file = paste0(x,".csv"))
}
lapply(example,GetFUNC)
只是让你可以看到第8列,它看起来是这样的:
testdata$numbers
[1] 32216510 10755328 8083097 6878500 8377025 6469979 10675856 8189887 5337239
[10] 5156737
错误:
Error in data.frame(..., check.names = FALSE) :
arguments imply differing number of rows: 11, 10
感谢任何见解你可以提供!
您的NewCol缺少第一个元素。你可以试试'NewCol = c(NA,ifelse [2:...)'。另外,你在哪里使用'x'?什么是“示例”? –
另外,请看'?diff' - 它将返回值之间的差异。所以你可以做'c(NA,diff(nums)<0)'。 – thelatemail