我在R中定義函數時遇到了問題。我試圖將for
循環的內容轉換爲函數,以便我可以將lapply
函數的列表,(以及在使用所述包multicore
轉mclapply
)R:在用戶定義的函數中構建數據框
我需要通過行建立一個數據幀的行,同時一個文本和一個數值在從函數的時間。我從以前的帖子瞭解到,我必須以某種方式返回值,因爲R的傳遞和複製而不是傳遞參考方案(請參閱:How to add a column in the data frame within a function
下面是我正在做的簡化版本:
letters <- c('aa', 'bb', 'cc', 'aa', 'bb', 'dd', 'cc', 'dd', 'ee', 'ee')
numbers <- 1:10
madeup <- data.frame(letters, numbers)
output <- data.frame()
functest <- function(x) {
subtest <- subset(madeup, letters==x)
if (nrow(subtest==2)){
calc <- subtest$numbers[2] - subtest$numbers[1]
...WHAT GOES HERE?...
}
}
任何人都知道我應該做些什麼來回報x
和calc
讓我可以再rbind
這兩個各值代入output
數據幀的新行?
如果我可以複製在這兩個值函數,我在想象執行命令會看起來像---
output <- rbind(output, [mc]lapply(letters, functest))
---但很高興能糾正這個!
如果(nrow(分測驗== 2))可能不是你的意思,但它不是真的無論如何,清除你的問題,以便清楚你想要的功能是什麼,看起來你想通過傳入x來發生某些事情,「subtest」是來自「madeup」的兩行,但是。 。 。如何發佈你想要轉換的for循環,所以我們至少有這樣的? – mdsumner
@mdsumner嗨 - 'if(nrow(subtest == 2))'就是我的意思 – cainesap
@mdsumner(oops,沒有意識到返回添加評論;道歉..新手..)所以,是的,如果聲明就是我的意思,我決定展示for循環的類比,因爲我正在使用的是不容易重現的。我需要的是x值有2行,並顯示減法計算的結果..這樣我就可以把它們放在一個數據框中 – cainesap