我有一个如下所示的功能。我想读取CSV文件,然后将数据拆分为两组。
loadData <- function(f) {
rdata <- read.csv(f, header=TRUE);
rdata$class <- factor(rdata$class);
rdata.a <- subset(rdata, class == 0);
rdata.b <- subset(rdata, class == 1);
return(rdata);
}
然后我按照以下方式调用该函数。
rdata <- loadData("/path/to/data.csv");
但是,当我尝试引用rdata.a(或rdata.b)时,我收到以下消息。
错误:找不到对象'rdata.a'
但是,我仍然可以“正常”引用返回的对象
类(radata)
[1]“data.frame”
如何修改函数以便还返回字段(a和b)?
请注意,如果此代码不在函数内部,那么一切都按预期工作(我可以引用rdata.a和rdata.b)。
答案 0 :(得分:2)
对象rdata
,rdata.b
和rdata.b
是两个不相关的对象。点在R中没有特殊含义,例如在Java或Python中。要返回两个子集,需要将它们放在一个列表中。此外,不需要在行尾添加分号:
loadData <- function(f) {
rdata <- read.csv(f, header=TRUE)
rdata$class <- factor(rdata$class)
rdata.a <- subset(rdata, class == 0)
rdata.b <- subset(rdata, class == 1)
return(list(rdata.a, rdata.b))
}
rdata <- loadData("/path/to/data.csv")
然后,您可以使用rdata[[1]]
和rdata[[2]]
访问它们。