我正在嘗試爲需要多次執行的任務編寫一個函數(在多個估算數據集上運行cox比例風險函數)。但是,當我將必要的對象傳遞給用戶定義的函數時,它會發出錯誤,指出找不到該對象。我認爲這是因爲該對象是在cch()函數中的「data =」參數指定的數據框中定義的。誰能幫我這個?用戶定義的函數eval()函數中出現「Object not found」錯誤?
實施例的數據:
my.list<-list(my.df1 <- data.frame(my.id = 1:100, my.time = rlnorm(100),
my.event= c(rbinom(50,1,0.2),rep(1,50)), my.det=rbinom(100,1,0.5),
sub= c(rep(1,50), rbinom(50, 1, 0.1))), my.df2 <- data.frame(my.id = 1:100,
my.time = rlnorm(100), my.event= c(rbinom(50,1,0.2),rep(1,50)),
my.det=rbinom(100,1,0.5), sub= c(rep(1,50), rbinom(50, 1, 0.1))))
外我的用戶定義的函數,這工作:
library(KMsurv)
library(survival)
cch(Surv(my.time,my.event)~as.factor(my.det), data=my.df1, subcoh=~sub,
id=~my.id, cohort.size=500)
然而,這不工作(這是一個例子的功能,而不是真正的函數作爲實際功能更復雜並對多個數據集進行分析,然後將其組合):
myfun<-function(dflist,time,event){
for (i in 1:length(dflist)){
out<-cch(Surv(time,event)~as.factor(my.det), data=dflist[[i]],
subcoh=~sub, id=~my.id, cohort.size=500)
print(out)}
}
myfun(my.list,my.time,my.event)
I得到這個錯誤:「錯誤Surv(時間,事件):對象'my.time'未找到」。
,我發現關於使用一個eval(替代())函數來處理類似問題的一些帖子,但我不能得到它的工作。任何建議,非常感謝!
你做它更多的變數計劃,從而使其能夠輸入時間/事件是非常重要的?或者你只是想做多個data.frames? –
你確定你是對的?首先,您應該將'my.det'傳遞給您的函數,以避免它依賴於父級環境。其次,我敢打賭,你的'my.list'有一個太多的子級別的列表,所以'dflist [[i]]'並不指向你的想法。 –
@詹姆斯托賓,是的,我需要能夠放入不同的時間/事件變量。另外,我希望能夠輸入不同的決定因素/解釋變量,但爲了簡單起見,我沒有提到這一點。儘管如此,也給出了相同的錯誤。 –