मुझे लगता है कि आप :=
ऑपरेटर (?':='
देखें) की तलाश में हैं। एक छोटी उदाहरण और mapply
समारोह के साथ तुलना से कम है (मुझे आशा है कि मैं mapply
समारोह सही ढंग से लागू होते हैं; मैं केवल data.tables आजकल का उपयोग कर रहा है, ताकि इस पर कोई वादा है, लेकिन अभी भी, data.table तरह से तेजी से और में है मेरी राय को याद करने के लिए आसान):
library(data.table)
> df <- data.frame(ID = 1:1e6,
+ B = rnorm(1e6),
+ C = rnorm(1e6))
> system.time(x <- mapply(foo, df$B, df$C))
user system elapsed
4.32 0.04 4.38
> DT <- as.data.table(df)
> system.time(DT[, D := foo(B, C)])
user system elapsed
0.02 0.00 0.02
> all.equal(x, DT[, D])
[1] TRUE
मेरा उत्तर पोस्ट करने के बाद, मैं अब और नहीं तो यकीन नहीं है अगर यह है कि आप क्या देख रहे हैं। मुझे उम्मीद है कि यह करता है, अगर यह नहीं करता है तो अधिक जानकारी दें (उदाहरण के लिए, क्या आपके पास कई कॉलम हैं जिन्हें आप एक समारोह को लागू करना चाहते हैं, न केवल मेरे उदाहरण में दो?)। वैसे भी, यह SO post आपके लिए ब्याज का हो सकता है।
स्रोत
2012-03-05 12:05:35
tmp <- डीटी [, डी: = योग (बी, सी)]; tmp [1: 2,] सभी तत्वों पर कुल योग देता है। मतलब के साथ काम नहीं करता है। –
http://stackoverflow.com/questions/7885147/efficient-row-wise-operations-on-a-data-table किसी भी फ़ंक्शन (माध्य) को सामान्यीकृत नहीं करता है। –
@ danas.zuokas: अच्छे अंक। उन मामलों में मुझे लगता है कि आप केवल 'पंक्ति ...' फ़ंक्शंस का उपयोग करेंगे, उदा। 'पंक्तिसमूह (डीटी [, सूची (बी, सी)]), लेकिन मुझे लगता है कि प्रश्न को खुला छोड़ना सबसे अच्छा है। –