2016-07-19 17 views
4

Rのアンダースコアの機能は何ですか?たとえば、次のコードでは、行:input$tbl_rows_current、現在表示されているデータが変数filtered_dataに格納されていると判断します。ただし、input$tbl_rows_allに変更すると、フィルタリングされたすべてのデータが変数filtered dataに格納されます。アンダースコアの意味

私はここでどのように機能するのか理解していますが、その一般的な使用方法は何ですか?

ui = fluidPage(dataTableOutput('tbl'), 
      plotOutput('plot1') 
) 

server = function(input, output) { 
output$tbl = renderDataTable({ 
    datatable(KSI, filter="top",rownames=TRUE,options = list(lengthChange = FALSE)) 
}) 
output$plot1 = renderPlot({ 
    filtered_data <- as.numeric(*input$tbl_rows_current*)  
    print(filtered_data) 
}) 
} 
shinyApp(ui=ui, server=server) 
+3

ご質問がRStudioコードエディタに関する場合は、「rstudio」タグを使用してください。文法に関する質問をするときに 'ペンと紙の'タグを使用しないでください! – Gregor

答えて

7

下線は意味的ではなく、変数名の一部に過ぎません。 (先史時代の_は、代入演算子<-と同義であり、変数名では使用できませんでした)tbl_rows_currenttbl_rows_allは、inputリストの特定の2つの要素に過ぎません。あなたの場合は作者の好みに応じて、彼らは同様にうまく

  • tblrowscurrenttblrowsall
  • TblRowsCurrentTblRowsAll
  • tbl.rows.currenttbl.rows.all
  • orangesjackhammers

と呼ばれている可能性がこの種のもののように、チェックアウトAre there any official naming conventions for R?

これらの名前は変更できません。元のパッケージ作成者だけが持つことができます。これらの要素は、コード内ではなく、光沢のある側で定義されています。これらの要素(つまり、これらの特定の名前を持つ要素)が見えるようになる、光沢のあるAPI /インターフェイスの一部です。

+0

+1しかし、それは主観的なものではないことを指摘しておく価値があります。私はオプション2に違反することはできませんが(個人的には嫌いですが)、他のすべてのオプションは客観的に劣っています。 –

+4

これは炎の戦争のものです。私はR coreメンバーが知っているのは、(1)昔ながらのRコードでは伝統的で、(2)シフトキーを押す必要がない方が簡単だと言う理由で、 ) –

+1

しかし、それは単にS3ディスパッチと衝突します、なぜこのコンベンションが悪いのか客観的な議論があります。 –