-1

我正在尝试使用 data.table 计算一个简单的比率。不同的文件有不同的 tmax 值,所以这就是我需要ifelse. 当我调试它时,dt 看起来不错。tmaxValue是单个值(在这种情况下遇到的第一个“t=60”),但是是t0Valuedt 中的所有“t=0”值。

summaryDT <- calculate_Ratio(reviewDT[,list(Result, Time), by=key(reviewDT)])

calculate_Ratio <- function(dt){
tmaxValue <- ifelse(grepl("hhep", inFile, ignore.case = TRUE), 
    dt[which(dt[,Time] == "t=240min"),Result],
    ifelse(grepl("hlm",inFile, ignore.case = TRUE), 
        dt[which(dt[,Time] == "t=60"),Result],
        dt[which(dt[,Time] == "t=30"),Result]))
t0Value <- dt[which(dt[,Time] == "t=0"),Result]
return(dt[,Ratio:=tmaxValue/t0Value])
}

我得到的是ResultfortmaxValue除以所有Result' 的所有t0Value',但我想要的是每个唯一的单个比率by

谢谢您的帮助。

4

1 回答 1

1

您没有提供可重现的示例,但通常使用ifelse是错误的做法。

尝试if(...) ... else ...改用。

ifelse(test, yes, no)行为很奇怪:它产生一个带有属性长度fromtest以及值 from yesor的结果no。...因此,在您的情况下,您应该得到没有属性且长度为一的东西-这可能不是您想要的,对吗?

[更新] ...嗯,或者也许是因为你说这tmaxValue是一个单一的值......那么问题不在于计算tmaxValue?请注意,这ifelse仍然是工作的错误工具......

于 2011-08-31T18:58:27.250 回答