我剛剛開始與R一起使用IgorPro進行數據處理和分析,這些人在他們正確的思想中沒有人會像我一樣花時間編寫腳本。然而,這兩者之間的概念上的斷開顯然導致了我的麻煩。編寫用於處理數據幀的函數R
我想編寫一個函數,它將採用數據幀中的任何列,並將其從0縮放到1。這裏最關鍵的是我希望重新縮放的數據在數據幀中結束。記我IgorPro框架,這是很容易:
normalize<-function(col){
col<-col/min(col)
}
如果我把testdf$testcol
,打印出結果,這工作,但結果不納入數據幀。有一項研究表明,這是因爲我的功能存在於本地環境中,並且爲了修改本地環境以外的事物,它需要與全球環境連接。
修改:
normalize<-function(col){
col<-col/min(col)
assign("col",col,envir=.GlobalEnv)
}
當然這只是吐出了一個名爲col
新載體,並不能幫助我在我的工作將覆蓋非擴展數據,但是。
將列名稱重新分配給重新調整的數據(這違背了編寫函數來完成此操作)的問題,我如何使用函數中的參數將函數輸出分配給實際的數據框?
最後說明:我很感激任何涉及使用軟件包的輸入,但是我有更多的數據操作要做,我希望能夠編寫自己的函數,而不必找到所有東西的軟件包,所以如果你能幫助我理解如何自己編寫這個函數,而不是指向其他地方的內置函數,那麼獎勵點就可以了。
你可以傳遞整個數據幀和列索引(或名稱)的功能,並執行計算 – Barranka
你'normalize'功能不會將您的數據擴展到[0,1],而是[1,infinity] –
您似乎對傳遞引用語義與傳值有點混淆。 [R沒有通過引用傳遞](http://stackoverflow.com/questions/2603184/r-pass-by-reference) –