0

我在计算 R 中癌症生长的倍增时间时遇到问题。数据包含对同一患者 5 年以上的多次扫描。然而,似乎有患者在一年内被多次扫描的情况。我想计算所有患者第一次扫描和最后一次扫描的节点质量的倍增时间。

我已经计算了最后一个病人的一个节点的倍增时间,但是我需要得到所有病人的倍增时间。

我使用的代码:

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]))
}
4

1 回答 1

0

如果我做对了,您唯一需要做的就是创建一个函数来获取数据filename并返回您需要的内容。然后只需遍历所有数据文件。

看起来这将是模式:

# 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)

如果我误解了您想要实现的目标,请提前道歉。

于 2013-06-05T22:40:50.540 回答