使用R中列表中的列创建矩阵
医学生试图在R中分析和可视化一些患者数据,现在需要帮助 我有几个列表(不同研究组的患者),每个列表都包含一列日期。我已经使用difftime将这些日期转换为天数差异,第一个日期是第0天。我想生成矩阵(或者可能是数据帧?),行数等于每个列表中经过的总天数,我将用与这些日期相关的数据填充其余的列 例如,列表1是一个包含6名患者的列表,$DT列是我的日期(以天为单位的时差) 目标是为列表中的每个对象生成一个矩阵,该矩阵最终将如下所示:使用R中列表中的列创建矩阵,r,for-loop,dataframe,matrix,R,For Loop,Dataframe,Matrix,医学生试图在R中分析和可视化一些患者数据,现在需要帮助 我有几个列表(不同研究组的患者),每个列表都包含一列日期。我已经使用difftime将这些日期转换为天数差异,第一个日期是第0天。我想生成矩阵(或者可能是数据帧?),行数等于每个列表中经过的总天数,我将用与这些日期相关的数据填充其余的列 例如,列表1是一个包含6名患者的列表,$DT列是我的日期(以天为单位的时差) 目标是为列表中的每个对象生成一个矩阵,该矩阵最终将如下所示: matrix6 [Date] [Lab A] [Lab
matrix6
[Date] [Lab A] [Lab B]
[48,] 48 1.23 4.56
[49,] NA NA NA
.....
[60,] 60 7.89 9.01
我可以使用for循环为单个患者创建这个,但我不知道如何在我所有列表中的所有患者之间迭代它
以下是适用于单个患者的for循环:
nums <- as.numeric(list1[[6]]$DT)
timeline <- matrix(nrow=max(nums,na.rm=TRUE), ncol=3)
for (i in 1:length(list1[[6]]$DT){
timeline[nums[i],1] <- nums[i]
timeline[nums[i],2] <- list1[[6]]$labA[i]
timeline[nums[i],3] <- list1[[6]]$labB[i]
}
关于如何使用列表中的所有患者生成这些时间表(因此列表1[[1到6]])有什么建议吗?我觉得我可能需要另一个for循环,但我不能让它正常工作
这是我第一次使用任何类型的编程语言,所以请随意指出任何看起来有趣的东西 一个具有预期输出的可复制示例将非常有用,您想要一个矩阵列表,对吗?看起来像是
lappy(列表1,函数(x)矩阵(c(as.numeric(x$DT),x$labA,x$labB,ncol=3))
我认为lappy是正确的想法,但我希望使矩阵的行数与我的日期的最大值相同。因此,我们将在时间线中的每一天都有一行,这些天的实验室值,所有其他的实验室值都是NA。我将编辑帖子以更好地反映这一点。这可能有助于:
nums <- as.numeric(list1[[6]]$DT)
timeline <- matrix(nrow=max(nums,na.rm=TRUE), ncol=3)
for (i in 1:length(list1[[6]]$DT){
timeline[nums[i],1] <- nums[i]
timeline[nums[i],2] <- list1[[6]]$labA[i]
timeline[nums[i],3] <- list1[[6]]$labB[i]
}
[1,] NA NA NA
[2,] 2 NA 1.23
[3,] NA NA NA
...
[47,] NA NA NA
[48,] 48 4.56 NA
[49,] NA NA NA
...
[66,] NA NA NA