2016-04-20 37 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