Έχω ένα πλαίσιο δεδομένων που ονομάζεται "newprice" (βλ. παρακάτω) και θέλω να αλλάξω τα ονόματα των στηλών στο πρόγραμμά μου στο R.
> newprice
Chang. Chang. Chang.
1 100 36 136
2 120 -33 87
3 150 14 164
Στην πραγματικότητα αυτό είναι που κάνω:
names(newprice)[1]<-paste("premium")
names(newprice)[2]<-paste("change")
names(newprice)[3]<-paste("newprice")
Δεν το έχω βάλει σε βρόχο γιατί θέλω κάθε όνομα στήλης να είναι διαφορετικό όπως βλέπετε.
Όταν επικολλώ το πρόγραμμά μου στην κονσόλα του R αυτή είναι η έξοδος που μου δίνει:
> names(newprice)[1]<-paste(“premium”)
Error: unexpected input in "names(newprice)[1]<-paste(“"
> names(newprice)[2]<-paste(“change”)
Error: unexpected input in "names(newprice)[2]<-paste(“"
> names(newprice)[3]<-paste(“newpremium”)
Error: unexpected input in "names(newprice)[3]<-paste(“"
Έχω δοκιμάσει εξίσου να χρησιμοποιήσω τη συνάρτηση c()
-για παράδειγμα c("premium")
, αντί της συνάρτησης paste()
, αλλά χωρίς αποτέλεσμα.
Θα μπορούσε κάποιος να με βοηθήσει να το καταλάβω αυτό;
Χρησιμοποιήστε τη συνάρτηση colnames()
:
R> X <- data.frame(bad=1:3, worse=rnorm(3))
R> X
bad worse
1 1 -2.440467
2 2 1.320113
3 3 -0.306639
R> colnames(X) <- c("good", "better")
R> X
good better
1 1 -2.440467
2 2 1.320113
3 3 -0.306639
Μπορείτε επίσης να υποσυνθέσετε:
R> colnames(X)[2] <- "superduper"
Το σφάλμα προκαλείται από τα "smart-quotes" (ή όπως αλλιώς λέγονται). Το μάθημα εδώ είναι, "μην γράφετε τον κώδικά σας σε έναν 'επεξεργαστή' που μετατρέπει τα εισαγωγικά σε smart-quotes".
names(newprice)[1]<-paste(“premium”) # error
names(newprice)[1]<-paste("premium") # works
Επίσης, δεν χρειάζεστε το paste("premium")
(η κλήση στο paste
είναι περιττή) και είναι καλή ιδέα να βάζετε κενά γύρω από το <-
για να αποφύγετε τη σύγχυση (π.χ. x <- -10; if(x<-3) "hi" else "bye"; x
).