r语言 function 指定多个返回值

# Goals: To write functions
#        To write functions that send back multiple objects.
 
# FIRST LEARN ABOUT LISTS --
X = list(height=5.4, weight=54)
print("Use default printing --")
print(X)
print("Accessing individual elements --")
cat("Your height is ", X$height, " and your weight is ", X$weight, "\n")
 
# FUNCTIONS --
square <- function(x) {
  return(x*x)
}
cat("The square of 3 is ", square(3), "\n")
 
                 # default value of the arg is set to 5.
cube <- function(x=5) {
  return(x*x*x);
}
cat("Calling cube with 2 : ", cube(2), "\n")    # will give 2^3
cat("Calling cube        : ", cube(), "\n")     # will default to 5^3.
 
# LEARN ABOUT FUNCTIONS THAT RETURN MULTIPLE OBJECTS --
powers <- function(x) {
  parcel = list(x2=x*x, x3=x*x*x, x4=x*x*x*x);
  return(parcel);
}
 
X = powers(3);
print("Showing powers of 3 --"); print(X);
 
# WRITING THIS COMPACTLY (4 lines instead of 7)
 
powerful <- function(x) {
  return(list(x2=x*x, x3=x*x*x, x4=x*x*x*x));
}
print("Showing powers of 3 --"); print(powerful(3));
 
# In R, the last expression in a function is, by default, what is
# returned. So you could equally just say:
powerful <- function(x) {list(x2=x*x, x3=x*x*x, x4=x*x*x*x)}

即将多个返回对象,放入同一个list内

a <- data.frame(b = c(1,2,3,4) , d = c('a','s','d','f'))

z <- data.frame(max = c(1111) , min = c(1))

e <- list(a,z)

此时 e[[1]] 即是a 其class 即为dataframe

e[[2]] 即是 z 其class也为dataframe