函数返回R

时间:2018-02-17 04:48:32

标签: r function return dataset

我在R中编写了以下函数,将数据集拆分为Test / Train。我需要我的代码来创建名为test和train的2个数据集。我得到的结果是,它正被打印到控制台。我需要将它创建为数据集。

    splt <- function(x,y){
    intrain <- sort(sample(nrow(x), nrow(x)*y))
    train <- x[intrain,]
    test <- x[-intrain,]
    train <- data.frame(train)
    test <- data.frame(test)
    return(test)
    return(train)
    }
    splt(iris,0.75)

我在R中使用内置的'iris'数据集。代码的目的是随机抽取75%的数据集并将其存储为“train”并将剩余的数据存储为“test”。我需要该函数自己创建2个数据框,而不只是在控制台中显示它们。另外,我不想明确地将它分配给函数外部的变量来创建像train <- splt(iris,0.75)这样的数据帧。我希望函数能够自己创建数据框。有没有办法做到这一点..?它甚至可能......?

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您只能从R中的函数返回单个对象。在上面的代码中,它到达行return(test),并返回data.frame。行return(train)永远不会运行。

如果您想要返回两个data.frames,可以将它们包装在list()中来执行此操作:

splt <- function(x,y){
  intrain <- sort(sample(nrow(x), nrow(x)*y))
  obj <- list(
    "train" = x[intrain,]
    "test" = x[-intrain,]
  )
  return(obj)
}

# get the two data frames from the returned list:
split_data <- splt(iris,0.75) 
train <- split_data$train
test <- split_data$test