1. s1 <- list(s='abc') class(s1) <- 'string' length.string <- function(a) nchar(a$s) print.string <- function(a) print(a$s) '+.string' <- function(a,b) { if (class(b) == 'string') b <- b$s tmp <- list(s=paste0(a$s,b)) class(tmp) <- 'string' tmp } s2 <- list(s='de') class(s2) <- 'string' length(s2) s3 <- 'f' s1+s2+s3 # "abcdef" s1+s2+'uv'+s3 # "abcdeuvf" s1+'uv'+s2 # "abcuvde" 2. plot2densities <- function(x1,x2) { d1 <- density(x1) d2 <- density(x2) d1taller <- max(d1$y) > max(d2$y) if (d1taller) { plot(d1) lines(d2) } else { plot(d2) lines(d1) } }