我正在尝试使用data.table计算一个简单的比率。不同的文件具有不同的tmax值,因此这就是我需要ifelse
的原因。当我调试它时,dt看起来很好。 tmaxValue
是单个值(在这种情况下遇到第一个“t = 60”),但t0Value
是dt中的所有“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])
}
我得到的是Result
的{{1}}除了所有tmaxValue
的所有Result
,但我想要的是每个唯一t0Value
的单一比率。
感谢您的帮助。
答案 0 :(得分:1)
您没有提供可重现的示例,但通常使用ifelse
是不对的。
请尝试使用if(...) ... else ...
。
ifelse(test, yes, no)
行为非常奇怪:它使用test
中的属性和长度以及来自yes
的值生成结果或no
。
...所以在你的情况下,你应该得到没有属性和长度的东西 - 这可能不是你想要的,对吗?
[更新] ......嗯,也许是因为你说tmaxValue
是一个单一的价值......
那么问题不在于计算tmaxValue
?请注意,ifelse
仍然是错误的工具...