Ich arbeitete mit dem eingebauten Datensatz (ggplot2
), genannt diamonds
. Nachdem ich dia1
zugewiesen hatte, führte ich das folgende Skript aus, um die Werte nach ihrem Karat zu gruppieren. Ich habe eine Nachricht über NAs
durch Zwang eingeführt bekommen. Ich verstehe nicht, wie das passiert wäre, wie auch aus der Summe des Vektors is.na()
, der gleich null ist.Fehlender Wert eingeführt in einer logischen
#data
library(ggplot2)
dia1 <- diamonds
#logic
x<-1
dia1$carat<-as.character(dia1$carat)
for (i in 1:(length(dia1$carat))){
if (0<(as.numeric(dia1$carat[x]))&(as.numeric(dia1$carat[x]))<=1){
dia1$carat[x]<-"0-1"
}
if (1 < (as.numeric(dia1$carat[x]))&(as.numeric(dia1$carat[x])) <= 2){
dia1$carat[x]<-"1-2"
}
if (2<(as.numeric(dia1$carat[x]))&(as.numeric(dia1$carat[x]))<=3){
dia1$carat[x]<-"2-3"
}
if (3<(as.numeric(dia1$carat[x]))&(as.numeric(dia1$carat[x]))<=4){
dia1$carat[x]<-"3-4"
}
if (4<(as.numeric(dia1$carat[x]))&(as.numeric(dia1$carat[x]))<=5){
dia1$carat[x]<-"4-5"
}
x<-x+1
}
durch Zwang eingeführtFehler if (0 < (as.numeric (dia1 $ Karat [x])) & (as.numeric (dia1 $ Karat [x])) <: Wert fehlt, wo TRUE/FALSCH Zusätzlich benötigt: Warnmeldungen: 1: NAs eingeführt durch Zwang 2: NAs
# check if there are any NAs in the data
sum(is.na(dia1$carat))
[1] 0
Alternativ warum gab es keine NAs
eingeführt w Henne der dia1$carat
Vektor wurde explizit zu einem Zeichen gezwungen, aber es wurden NAs
in die Rücktransformation eingeführt?
'schneiden (dia $ Karat, bricht = 0: 6, Etiketten = c ("0-1" , "1-2", "2-3", "3-4", "4-5", "5-6"), include.lowest = TRUE) 'wird wahrscheinlich sehr viel effizienter sein. Und Sie sollten wahrscheinlich einen 'Bereich (dia $ carat)' machen, um Ihre Annahmen zu bestätigen. – hrbrmstr
@hrbrmstr Danke. Wird benutzen. Aber als Lernziel wollte ich wissen, was mit meinem Code schief gelaufen ist. –
Wie gesagt, Sie möchten vielleicht einen 'Bereich (dia $ carat)' machen, um Ihre Annahmen zu überprüfen. Und 'for' +' if' == python/C/Java, nicht R. – hrbrmstr