Βίντεο: Programming - Computer Science for Business Leaders 2016 2024
Σε ορισμένες περιπτώσεις, θα χρειαστεί να κάνετε πολλαπλές επιλογές στο R. Οι παραμέτρους if και if … else σας αφήνουν με ακριβώς δύο επιλογές, αλλά η ζωή είναι σπάνια τόσο απλή. Φανταστείτε ότι έχετε κάποιους πελάτες στο εξωτερικό.
Ας υποθέσουμε ότι οποιοσδήποτε πελάτης στο εξωτερικό δεν χρειάζεται να πληρώσει ΦΠΑ για χάρη του παραδείγματος. Αυτό σας αφήνει τώρα τρεις διαφορετικούς συντελεστές ΦΠΑ: 12 τοις εκατό για τους ιδιώτες πελάτες, 6 τοις εκατό για τους δημόσιους πελάτες, και κανένα για τους ξένους πελάτες.
Ο πιο διαισθητικός τρόπος επίλυσης αυτού του προβλήματος είναι απλώς η αλυσίδα των επιλογών. Εάν ένας πελάτης ζει στο εξωτερικό, μην χρεώνετε ΦΠΑ. Διαφορετικά, ελέγξτε εάν ο πελάτης είναι δημόσιος ή ιδιωτικός και εφαρμόστε τον σχετικό συντελεστή ΦΠΑ.
Αν οριστεί ένας πελάτης παραμέτρων για τη συνάρτηση που μπορεί να πάρει τις τιμές «στο εξωτερικό», «δημόσιο» και «ιδιωτικό», θα μπορούσατε να κωδικοποιήσετε τον προηγούμενο αλγόριθμο όπως παρακάτω:
if (client == ') {tot. τιμή <- καθαρή. τιμή * 1. 12 # ΦΠΑ 12%} άλλο {if (client == 'δημόσια') {tot. τιμή <- καθαρή. τιμή * 1. 06 # 6% ΦΠΑ} αλλιώς {tot. τιμή <- καθαρή. τιμή * 1 # 0% ΦΠΑ}}
Με αυτόν τον κώδικα, στήνετε τη δεύτερη δήλωση if … else στην πρώτη δήλωση if … else. Αυτό είναι απολύτως αποδεκτό και θα λειτουργήσει, αλλά φανταστείτε τι θα έπρεπε να κάνετε αν είχατε τέσσερις ή ακόμα περισσότερες δυνατότητες. Η τοποθέτηση μιας δήλωσης σε μια δήλωση σε μια δήλωση σε μια δήλωση δημιουργεί γρήγορα ένα τεράστιο σγουρό χάος.
Ευτυχώς, το R σας επιτρέπει να γράψετε όλο αυτό το κώδικα λίγο πιο καθαρά. Μπορείτε να συνδέσετε τις παραμέτρους if … else ως εξής:
εάν (client == 'private') {tot. τιμή <- καθαρή. τιμή * 1. 12} αλλιώς αν (client == 'δημόσια') {tot. τιμή <- καθαρή. τιμή * 1. 06} αλλιώς {tot. τιμή <- καθαρή. τιμή}
Σε αυτό το παράδειγμα, η αλυσοποίηση κάνει τη διαφορά μόνο δύο τιράντες, αλλά όταν έχετε περισσότερες δυνατότητες, καθιστά τον κώδικα αναγνώσιμο. Σημειώστε ότι δεν χρειάζεται να ελέγξετε αν ο πελάτης επιχείρησης είναι ίσος με το «εξωτερικό» (αν και δεν θα ήταν λάθος να το κάνετε αυτό). Απλά υποθέστε ότι αν ο πελάτης δεν έχει καμία από τις δύο άλλες αξίες, πρέπει να είναι «στο εξωτερικό».
Οι αλυσιδωτές δηλώσεις δουλεύουν σε μία μόνο τιμή κάθε φορά. Δεν μπορείτε να χρησιμοποιήσετε αυτές τις αλυσιδωτές δηλώσεις if … else με διανυσματικό τρόπο. Για αυτό, μπορείτε να φωτίσετε πολλαπλές δηλώσεις, όπως παρακάτω:
ΦΠΑ <- ifelse (client == 'private', 1.12, ifelse (client == 'public', 1. 06, 1)). τιμή <- καθαρή. τιμή * ΦΠΑ
Αυτό το κομμάτι του κώδικα μπορεί να γίνει αρκετά συγκεχυμένο εάν έχετε περισσότερες από τρεις επιλογές. Η λύση σε αυτό είναι να μεταβείτε.