2017-11-08 34 views
1

変数名を関数内の文字列として引用したいが、それを達成できませんでした。R関数で変数名を取得する方法

例えば、1エクセルで、私は4つのワークシートを持って、私は

sales.df<- read_xlsx("abc.xlsx", sheet ="sales") 
profit.df<- read_xlsx("abc.xlsx", sheet ="profit") 
revenue.df<-read_xlsx("abc.xlsx", sheet ="revenue") 
budget.df<- read_xlsx("abc.xlsx", sheet ="budget") 

は、代わりに、私は、関数を書きたい、次の行を4回使用する必要があります。

read_func = function(sheet_name){ 

    sheet_name.df<- read_xlsx("abc.xlsx", sheet ="sheet_name")) 

    return(sheet_name.df) 
} 

関数を呼び出す

read_func(sales) 

残念ながら、残念ながら、機能しません。 sheet_nameは動的に更新されません。

ご協力いただきありがとうございます。

+3

'' sheet_name ''は文字列ですが、変更されません。 'sheet_name'は変数で、ユーザは' 'sales" 'や' 'profit" 'のような文字列に設定します。あなたの関数の中で 'sheet_name'を引用符なしで使用してください。文字列引数 'read_fun(" sales ")で関数を呼び出します。 – Gregor

答えて

1

readxlパッケージには、ファイル内のすべてのシートを読み取る機能があります。lapplyと同じことができます。

library(readxl) 
lapply(excel_sheets("abc.xlsx"), read_excel, path = "abc.xlsx") 

これはティダバースの一部ですので、詳しくはthereをお読みください。

+0

こんにちはSeeellayewhy、このlapply関数は正常に動作します。しかし、もう一つの質問です。リストを別のデータフレームに自動的に分割して対応する名前を割り当てるにはどうしたらいいですか? – bihappywater

関連する問題