WalzoneInterview Prep
📞 Interviewing soon? Practice with a realistic AI mock phone interview — it calls you, then scores you. First 15 min FREE →

R · Advanced · question 43 of 100

Explain the difference between S3 and S4 object systems in R. Provide examples of their usage.?

📕 Buy this interview preparation book: 100 R questions & answers — PDF + EPUB for $5

In R, there are two object-oriented programming systems: S3 and S4. The S3 object system is the simpler of the two and is based on the idea of object-oriented programming as a way of organizing code. S4, on the other hand, is a more formal and structured system that provides more control and flexibility over object creation and manipulation.

S3 objects are created using the class() function, and methods are defined using the generic.function() syntax. Here is an example of creating an S3 object:

    # Create an S3 object
    my_obj <- list(data = 1:10, type = "numeric")
    class(my_obj) <- "my_class"
    
    # Define a method for my_class
    my_method <- function(x, ...) {
        # Some code here
    }
    
    generic.function("my_method")

In this example, we create an S3 object my_obj using a list with two elements: data and type. We then assign the class "my_class" to the object using the class() function. Finally, we define a method for the my_class object using the generic.function() syntax.

S4 objects, on the other hand, are created using the setClass() function and are defined with a formal structure that includes slots, methods, and generics. Here is an example of creating an S4 object:

    # Create an S4 object
    setClass("my_class", slots = list(data = "numeric", type = "character"))
    
    # Define a method for my_class
    setGeneric("my_method", function(object, ...) standardGeneric("my_method"))
    
    setMethod("my_method", "my_class", function(object, ...) {
        # Some code here
    })

In this example, we create an S4 object my_class using the setClass() function, which defines two slots: data and type. We then define a method for my_class using the setGeneric() and setMethod() functions.

Overall, the main difference between S3 and S4 object systems is their structure and formality. S4 objects are more formal and structured, while S3 objects are more flexible and lightweight. S3 is often used for simpler tasks, while S4 is preferred for more complex and structured tasks.

Reading is step one. Saying it out loud is the interview. Our AI interviewer calls your phone and runs a realistic R interview — then scores it.
📞 Practice R — free 15 min
📕 Buy this interview preparation book: 100 R questions & answers — PDF + EPUB for $5

All 100 R questions · All topics