我在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)
这样的数据帧。我希望函数能够自己创建数据框。有没有办法做到这一点..?它甚至可能......?
非常感谢您的帮助。
答案 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