这是我正在尝试执行的函数,我的数据目录和基目录具有正确的文件路径。
loadDIH = function(){
##----
##++++
## Target variable: Days in hospital Year 2
dih.Y2 <- read.csv(file = paste(dataDir, "DaysInHospital_Y2.csv", sep=""),
colClasses = c("factor", "integer", "integer"),
comment.char = "")
## Days in hospital Year 3
dih.Y3 <- read.csv(file = paste(dataDir, "DaysInHospital_Y3.csv", sep=""),
colClasses = c("factor", "integer", "integer"),
comment.char = "")
return(list(dih.Y2,dih.Y3))
}
>return(list(dih.Y2,dih.Y3))
Error: object 'dih.Y2' not found
我的数据目录和基本目录具有正确的文件路径,因为当我使用该函数执行代码时,它会读取数据,例如。
dih.Y2 <- read.csv(file = paste(dataDir, "DaysInHospital_Y2.csv", sep=""),
colClasses = c("factor", "integer", "integer"),
comment.char = "")
dih.Y3 <- read.csv(file = paste(dataDir, "DaysInHospital_Y3.csv", sep=""),
colClasses = c("factor", "integer", "integer"),
comment.char = "")
>dih.Y2
返回dih.Y2
关于如何将其作为函数执行的任何想法或想法? 我感谢任何帮助吗?
答案 0 :(得分:4)
在函数内创建的对象仅在该函数中可见。您需要使用明确的return
语句,例如
return(list(dih.Y2,dih.Y3))
此外,您可能会花些时间阅读scope上的R手册部分。
还有全局赋值运算符<<-
,但它的使用常常令人不悦。您应该坚持使用R的方式,并让函数返回您想要的值。
在您的示例中,它看起来像这样:
loadDIH = function(){
##----
##++++
## Target variable: Days in hospital Year 2
dih.Y2 <- read.csv(file = paste(dataDir, "DaysInHospital_Y2.csv", sep=""),
colClasses = c("factor", "integer", "integer"),
comment.char = "")
## Days in hospital Year 3
dih.Y3 <- read.csv(file = paste(dataDir, "DaysInHospital_Y3.csv", sep=""),
colClasses = c("factor", "integer", "integer"),
comment.char = "")
return(list(dih.Y2,dih.Y3))
}
然后是命令,
foo <- loadDIH(...)
将导致foo
成为包含dih.Y2
和dih.Y3
的列表。
对于初学者来说,manuals中的一些内容会广泛涵盖这类内容。