我在计算R中癌症生长的倍增时间时遇到问题。该数据包含5年内对同一患者进行的多次扫描。然而,似乎在一年中多次扫描患者的情况。我想计算1次扫描和最后一次扫描的所有患者节点质量的倍增时间。
我已计算出最后一位患者节点的倍增时间,但我需要为所有患者提供倍增时间。
我使用过的代码:
Nod <- read.table("NoData270513.txt" , header = T)
Nod$CoNo <- 10*Nod$StNo + Nod$LeNo
length(Nod$CoNo); length(unique (Nod$CoNo))
Nod$CoNo <- factor(Nod$CoNo)
Nod$CTDato <- as.Date(Nod$CTDato)
NodTyp1 <- rep(NA, length(unique(Nod$CoNo)))
i <- 0; i1 <- 0; i2 <- 0
for (j in unique(Nod$CoNo)) { temp <- Nod[Nod$CoNo==j, ]
i <- i + 1; i1 <- i2 + 1; i2 <- i2 + length(temp$CoNo)
NodTyp1[1:20]
vdt <- rep(NA, 1216)
if (length(temp$Age) > 1 )
{
vdt[j] <- (as.numeric(temp$CTDato[length(temp$Age)]) - as.numeric(temp$CTDato[1])) * log(2)/log((temp$SDia[length(temp$Age)]/temp$SDia[1]))
}
答案 0 :(得分:0)
如果我做对了,你唯一需要的就是创建一个获取数据filename
并返回你需要的函数。然后只需遍历所有数据文件。
似乎是patern:
# declare function for one patient
calculate.doub.time <- function(filename){
Nod <- read.table(filename , header = T)
# ...
# ...
# return what you want
}
# calculate all data files
all.data <- list.files() # assuming your working directory contains all data
result <- sapply(all.data, calculate.doub.time)
如果我误解了你想要达到的目标,请提前抱歉。