r - data.table 底部的额外列名
问题描述
我有一个函数问题,问题是当我运行它时:
selectTrialAnimals <- function(data, nB, nZ, minWeight){
buitenProef <- data[!is.na(Opm.)]
tempBiggen <- data[is.na(Opm.)]
tempBiggen <- tempBiggen[order(Sex,Speen_gew)]
biggenB <- tempBiggen[Sex=="B"]
biggenZ <- tempBiggen[Sex=="Z"]
if (nrow(biggenB[Speen_gew >= minWeight]) >= nB){
tempBuitenProefB <- biggenB[Speen_gew < minWeight ]
biggenB <- biggenB[Speen_gew >= minWeight]
}else{
tempBuitenProefB <- biggenB[1: (nrow(biggenB) - nB)]
biggenB <- biggenB[(nrow(biggenB) - nB + 1):nrow(biggenB)]
}
if (nrow(biggenZ[Speen_gew >= minWeight]) >= nZ){
tempBuitenProefZ <- biggenZ[Speen_gew < minWeight ]
biggenZ <- biggenZ[Speen_gew >= minWeight]
}else{
tempBuitenProefZ <- biggenZ[1: (nrow(biggenZ) - nZ)]
biggenZ <- biggenZ[(nrow(biggenZ) - nZ + 1):nrow(biggenZ)]
}
while (nrow(biggenB) > nB| nrow(biggenZ) > nZ){
if (nrow(biggenB) > nB){
if (biggenB[,mean(Speen_gew)] > (biggenZ[,mean(Speen_gew)])){
tempBuitenProefB <- rbind(tempBuitenProefB,biggenB[nrow(biggenB)])
biggenB <- biggenB[-nrow(biggenB)]
}
if (biggenB[,mean(Speen_gew)] < (biggenZ[,mean(Speen_gew)])){
tempBuitenProefB <- rbind(tempBuitenProefB,biggenB[1])
biggenB <- biggenB[-1]
}
}
if (nrow(biggenZ) > nZ){
if (biggenZ[,mean(Speen_gew)] > (biggenB[,mean(Speen_gew)])){
tempBuitenProefZ <- rbind(tempBuitenProefZ,biggenZ[nrow(biggenZ)])
biggenZ <- biggenZ[-nrow(biggenZ)]
}
if (biggenZ[,mean(Speen_gew)] < (biggenB[,mean(Speen_gew)])){
tempBuitenProefZ <- rbind(tempBuitenProefZ,biggenZ[1])
biggenZ <- biggenZ[-1]
}
}
}
tempBuitenProef <- rbindlist(list(buitenProef,tempBuitenProefB, tempBuitenProefZ))
tempBuitenProef <- tempBuitenProef[order(Sex,Speen_gew)]
tempBiggen <- rbind(biggenB, biggenZ)
return(list(AnimalsInTrial = tempBiggen, AnimalsOutTrial = tempBuitenProef))
}
它将一组额外的列名添加到它返回的 data.table 的底部。像这样(仅显示部分结果):
$AnimalsOutTrial
Sex Oornr Geb_dat Zeugnr Beer Geb_gew Speen_gew oud K.H. Opm.
1: B 84001 2020-04-24 18/114 WESLY 0.7 2.2 26 25 breuk
2: B 83974 2020-04-23 17/67 WESLY 1.3 3.2 27 24 <NA>
.....
37: Z 84081 2020-04-25 18/120 WESLY 0.9 5.3 25 30 <NA>
38: Z 84085 2020-04-25 18/120 WESLY 1.2 7.0 25 30 dikke poot
Sex Oornr Geb_dat Zeugnr Beer Geb_gew Speen_gew oud K.H. Opm.
问题是我无法用测试数据重现它:
test <- data.table(Sex=c("B","B","Z","Z","B","B","Z","Z"),Opm.=c(NA,"x",NA,NA,"x",NA,NA,NA),Speen_gew=c(1,2,3,5,2,8,7,9))
这按预期作为输入运行。我不能提供完整的原始数据,因为它是机密的。以前有没有人遇到过这种行为,我该如何处理?提前致谢!
解决方案
推荐阅读
- ruby-on-rails - 如何解决将rails数据导出到csv的日文字符的编码问题?
- c++ - 为 C++ 映射做编号列表时的 int 或 index
- python - 如何在数据帧上使用类似 Count_values 的东西?
- javascript - 创建一个待办事项列表应用程序并停留在帖子上
- javascript - 打字稿反应 createContext 和 useState
- sql - 如何在 PostgreSQL 中设计特定于上下文的权限/角色系统?
- networking - 如何在 Windows10 中使用 Cuckoo 使用 Windump
- python - 特斯拉 api 股价
- php - 如何通过 FireFox Developer 设置和使用 FirePHP
- jquery - 如何在 Jquery Mobile 1.4 中调整项目列表的大小和位置