【发布时间】:2015-09-05 22:08:35
【问题描述】:
我正在尝试检索通过 for 循环添加的新添加行的索引。
从头开始,我有一个 p 值矩阵列表,每个矩阵都有可变数量的行和列。这是因为并非所有组都有足够数量的治疗个体来运行 t 检验。以下是我访问此示例列表时打印到控制台的内容:
$Group1
Normal Treatment 1 Treatment 2
Treatment 1 1 NA NA
Treatment 2 1 1 NA
Treatment 3 1 1 1
$Group2
Normal Treatment 2
Treatment 2 1 NA
Treatment 4 1 1
我希望每个组都以正确的顺序具有相同数量的行和列,而缺失的值只需用 NA 填充。这是我想要的示例:
$Group1
Normal Treatment 1 Treatment 2 Treatment 3
Treatment 1 1 NA NA NA
Treatment 2 1 1 NA NA
Treatment 3 1 1 1 NA
Treatment 4 NA NA NA NA
$Group2
Normal Treatment 1 Treatment 2 Treatment 3
Treatment 1 NA NA NA NA
Treatment 2 1 NA NA NA
Treatment 3 NA NA NA NA
Treatment 4 1 1 NA NA
这是我目前的代码:
fix.results.row <- function(x, factors) {
results.matrix <- x
num <- 1
for (i in factors){
if (!i %in% rownames(results.matrix)) {
results.matrix <- rbind(results.matrix, NA)
rownames(results.matrix)[num] <- i
}
num <- num + 1
}
rownames(results.matrix) <- results.matrix[rownames(factors),,drop=FALSE]
return(results.matrix)
}
在上面的函数中,x 是我的矩阵列表,factors 是我想要的所有因子的列表。我有一个类似的添加列的功能。
在我看来,我的问题在第 2 组。如果它发现我缺少治疗 1,它将用行名治疗 1 替换行名治疗 2,因此治疗 2 的数据现在被错误标记为治疗1. 然后它按照我想要的方式对变量重新排序,但是数据已经被错误标记了!
如果我可以访问新添加的行的索引,该索引会随着组的变化而变化,那么我可以只更改该特定的行名称。有什么建议?如果我需要提供更多信息,请告诉我。我试图涵盖所有内容,但我不确定您是否还需要其他任何内容。
【问题讨论】: