2016-04-20 38 views
1

我有一個數據框「MyFrame」,我想創建一個函數,它將動態引用此數據框中的一些元素。R - 對函數內使用的數據幀的動態引用

A B 
1 11 
2 12 
3 13 
4 14 

我希望函數執行以下計算

myfunction(rownumber)=(B[rownumber]-B1)/sum(B1:B[rownumber]) 

我想這樣的事情,但它無法正常工作。

myfunction <- function(x) { 
    myfunction <- (MyFrame$B[x]-MyFrame$B[1])/(sum(MyFrame$B[2:x]) 
return(myfunction)} 

myfunction(4)=(14-11)/(11+12+13+14)=0.06 

我想這是因爲引用是不正確的。如何做到這一點?

回答

1

這是你期望的嗎?

library(data.table) 
setDT(MyFrame) 
MyFrame[,C:=(B[x]-B[1L])/sum(B[1:x])] 
+0

優秀,它的計算!如果我會進一步採用這個函數來創建填充相應值的列C,那麼最好的方法是什麼?這可以一次應用於整個柱子嗎? – Michal

+0

對不起,q是一個錯字,它的意思是x – Michal