Я хотел бы найти индекс max для каждой строки моего файла данных в формате ldf через каждые три столбца и создать кадр данных с результатами.
Здесь ниже мой код, который работает.
Но я хотел бы улучшить это и сделать это быстрее. Я пытался использовать apply для перехода по строкам ldf, но безуспешно.
Вот мой провал:
ldf<-data.frame(name=c("aa","bb","cc"),V1=c(10,15,10),V2=c(20,10,8),
V3=c(8,8,9),V4=c(20,8,9),V5=c(10,15,8),V6=c(8,10,10))
pos<-NULL
index<-NULL
pos<-apply(ldf,1,function(x){
index<-sapply(seq(2, length(x), 3),function(i){
index<-NULL
cbind(index,which(x[i:(i+2)]==max(x[i:(i+2)]), arr.ind=TRUE)[2])
})
pos<-rbind(pos,index)
})
pos
[,1] [,2] [,3]
[1,] NA NA NA
[2,] NA NA NA
Вот код, который работает с ожидаемыми результатами, которые будут улучшены:
ldf<-data.frame(name=c("aa","bb","cc"),V1=c(10,15,10),V2=c(20,10,8),
V3=c(8,8,9),V4=c(20,8,9),V5=c(10,15,8),V6=c(8,10,10))
index<-NULL
pos<-NULL
for(x in 1:dim(ldf)[1]){
index<-sapply(seq(2, dim(ldf)[2], 3),function(i){
index<-NULL
cbind(index,which(ldf[x,i:(i+2)]==max(ldf[x,i:(i+2)]),
arr.ind=TRUE)[2])
})
pos<-rbind(pos,index)
}
pos
[,1] [,2]
index 2 1
index 1 2
index 1 3
Заранее спасибо!