2012-03-11 13 views
2

ここでは、実行しようとしている関数があります。私のデータディレクトリとベースディレクトリに正しいファイルパスがあります。私は機能を使用してでコードを実行するとき、それはデータ等を読み取るため関数内のデータの読み込み

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

に機能としてこれを実行する方法上の任意の考えやアイデアを返しますか? 私は助けていただきありがとうございます。

答えて

4

関数内で作成されたオブジェクトは、その関数内でのみ表示されます。あなたはまた、あなたはおそらくscopeにRマニュアルのセクションを読んでいくつかの時間を過ごすの恩恵を受けるだろう

return(list(dih.Y2,dih.Y3)) 

のように、明示的なreturnステートメントを使用したいと思います。

あり世界的な代入演算子<<-もあるが、それの使用は、多くの場合、ひんしゅくを買うされています。おそらく、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(...) 

foodih.Y2dih.Y3を含むリストであることになります。

もののこの種のは、初心者のためのmanualsの一部に広く覆われています。私はそのreturnステートメントを使用してみました

+0

、まだ運が、私は固定必要小さなその何かを知っている、eventually.lol –

+0

@ user1250865いいえ、あなたは完全に誤解それを把握しません。 'return'ステートメントはあなたの関数内にあり、あなたが知っているように、値を返します。 '?return'で始まるドキュメントを読んでみてください。 – joran

関連する問題