For Loop i R
Har en lista (1,4,5,3,1,4,5,6,1,4,8) och vill räkna antalet gånger som 1 är på indexet före 4. I listan blir fallet 3. Hur kan jag göra det? har gjort följande:
counting<-function(lista, n,m){
p=2
for (p in c(lista)){
a <-if(results2[p]==n & results2[p-1]==m){
sum(a)
}
p<-p+1
}
}
counting(lista,4,1)
koden generar inget. Någon som har förslag hur man kan göra?:D
Provade din kod på https://rextester.com/l/r_online_compiler och fick felmeddelandet: object 'lista' not found.
Fixade lite i koden och fick sedan felmeddelandet: object 'results2' not found.
Fixade lite mer i koden och fick sedan felmeddelandet: argument is of length zero.
Har inte kodat i R så jag vet just nu inte vad som är felet. Det verkar dock lite konstigt att initiera p till 2, använda p i for-loopen och öka p i for-loopen.
Just nu ser koden ut så här:
counting<-function(lista, n,m) {
p=2
for (p in c(lista)){
a <-if(lista[p]==n & lista[p-1]==m){
sum(a)
}
p<-p+1
}
}
minlista <- list(1,4,5,3,1,4,5,6,1,4,8)
counting(minlista,4,1)
tack för svar!
får dock detta felmeddelande fortfarande :(
Error in if (lista[p] == n & lista[p - 1] == m) { :
argument is of length zero
Sami skrev:tack för svar!
får dock detta felmeddelande fortfarande :(
Error in if (lista[p] == n & lista[p - 1] == m) { :
argument is of length zero
Jag får också det felmeddelandet men jag lämnade det kvar medvetet. Hur tänker du kring det felet?
jag löste det! Tack för hjälpen:D:D
I din kod ser det ut som att du vill att p ska vara ett index (dvs 2, 3, 4, osv). Som det är skrivit nu är dock p ett element i listan (dvs, p kommer vara 1, 4, 5, 3, 1, 4 osv). Det du skulle göra annorlunda är att ändra for-loopen till
for(p in 2:length(lista)){
#gör någonting
}
Då kommer p starta på 2 och sedan fortsätta med 3, 4 osv