2012-04-20 60 views
2

我有讀取和處理數據的代碼,我希望允許多個用戶使用,但我不想讓他們看到代碼。在不暴露代碼的情況下與多個用戶共享R功能

有沒有辦法使用R或RStudio來做到這一點?

+8

讓一個存儲庫完全正交於用戶是否可以看代碼與否。這是你第二次問這個問題,而你仍然用一個措辭不佳的方式提問。如果你真正的問題是:「我如何隱藏用戶的代碼」,那麼答案可能是「只有一些困難」。 – 2012-04-20 19:57:38

+0

有趣的是,試圖提出問題的人受到「專家」的攻擊。我似乎並不在乎在這個網站上建立聲望。 – 2012-04-20 20:15:12

+5

我們許多人貢獻開源代碼。我們可能不是要求隱藏代碼的最佳羣體... – 2012-04-20 20:35:04

回答

8

一種選擇是使用類似Rserve的方式將您的函數作爲服務公開。但是,這會要求您承載爲用戶運行代碼的服務器。

+0

+1同意。 RStudio Server也適用於此解決方案,以及許多其他承載代碼服務器端的軟件包。 – Iterator 2012-04-21 16:07:01

+4

但是使用RStudio Server你不會隱藏代碼。 R會話遠程運行,但用戶仍可以看到所有使用的代碼。 – 2012-04-24 08:51:11

2

當您使用R代碼時,我們無法隱藏用戶的代碼。您可以分發軟件包的二進制包,但仍然以明文形式包含R代碼。另外,當代碼加載到R時,用戶可以通過在命令行上輸入而不用括號查看任何函數的源代碼。

我不確定你爲什麼要隱藏代碼。也許你可以在你的問題上評論一下,以便讓事情更清楚。另外,我們可能會想出解決方案,而不是隱藏代碼來解決您的問題。如果隱藏代碼是爲了保持來自未經驗的用戶的實現細節,您可以執行以下操作。

  1. 爲其功能想要提供給用戶的函數創建包裝函數。這樣的包裝功能,可以看起來像:

    spam_wapper = function(a, b) { 
        return(.spam(a = a, b = b)) 
    }) 
    
  2. 使所有非包裝功能對用戶不可見。他們仍然可以通過顯式地說明你的包的命名空間訪問它們:

    pkgname::.spam 
    

    ,但它是很難獲得的代碼,使其更難找到雛[R程序員。但是一旦他們知道了這個訣竅,這將無濟於事。

如果你的原因是因爲你想賺錢使用R代碼裏面,隱藏巧妙製作的R代碼裏面(在這種情況下,我會defintely分享:)),或在任何競爭中隱藏你的代碼可能竊取你的想法。在這種情況下,@baptiste的建議可能會起作用。但是我猜想用Fortran,C或C++重寫你的代碼需要花費很多工作...我會說,只要給他們源代碼...

相關問題