Я анализирую этот набор данных в R: https://www.kaggle.com/rounakbanik/pokemon
Я попытался определить, какой тип покемонов имеет наименьшую уязвимость, объединяя столбцы против типа "*".
, ностолбец окончательной оценки повторяет первое найденное значение вместо изменения для каждого типа, где я делаю ошибку.
pokemon_csv=read.csv("pokemon.csv")
pokemon_csv
tiposunicos=c(levels(factor(pokemon_csv$type1)))
pokemonDT=as.data.table(pokemon_csv)
nmunidades=data.table(type="",score=0)
valorinmunidad<-function(x){ #devuelve el valor de la columna
v=0
if(head(todostipo[,..x],1)==0){
v=v+0
} else if(head(todostipo[,..x],1)==0.25){
v=v+0.25
} else if(head(todostipo[,..x],1)==0.5){
v=v+0.5
} else if(head(todostipo[,..x],1)==1){
v=v+1
}else if(head(todostipo[,..x],1)==2){
v=v+2
}else if(head(todostipo[,..x],1)==4){
v=v+4
}else{returnValue(0)}
return(as.double(v))
}
puntuacion<-function(x){
todostipo=pokemonDT[type==x]
todascols=c(colnames(pokemonDT[type==x]))
e1=todascols[-1]
entradafunct=e1[-c(19:44)]
puntuacion=0
p=lapply(entradafunct,valorinmunidad)
puntos=(p[[1]]+p[[2]]+p[[3]]+p[[4]]+p[[5]]+p[[6]]+p[[7]]+p[[8]]+p[[9]]+p[[10]]+p[[11]]+p[[12]]+p[[13]]+p[[14]]+p[[15]]+p[[16]]+p[[17]]+p[[18]])
inmunidad=data.table(type=x,score=puntos)
return (inmunidad)
}
puntospokemon=lapply(tiposunicos,puntuacion)
dfFinal=do.call("rbind", puntospokemon)
ordenado=dfFinal[order(score)]
ordenado
Например, если вы делаете puntuacion («ошибка»), вы получаете 19 или puntuacion(«сталь») и получите 15, так почему, когда я отображаю список со всеми типами, он не меняет счет и повторяет один и тот же