我正在为使用数据帧而苦苦挣扎。
我正在计算n个参与者的测试结果,每个参与者都有m个结果。这将在嵌套的for循环中完成:n x m。因此,第一个For-Loop进入第一个先验。第二个for循环计算测试值。1个先证者的1个测试的test-result是从函数返回的。
最后,我想要一个这样的表:
我很难用数据帧和向量来设置它,因为我对R完全陌生。
伪代码:
final_results[][]
for (each folder in path) {
proband_results[]
for (each file in folder) {
test_result <- someFunction(file)
proband_results.append(test_result)
}
final_results.append(proband_results)
}
发布于 2018-06-09 07:21:50
这里有基于你的代码的R版本。使用NULL
并使用cbind
和rbind
进行初始化。我假设test_result
已经是一个data.frame类型。
final_results= NULL
for (each folder in path) {
proband_results = NULL
for (each file in folder) {
test_result <- someFunction(file)
proband_results = cbind(proband_results,test_result) # column bind
}
final_results = rbind(final_results,proband_results) # row bind
}
然而,在R中,这不是一种有效的组合结果的方法。因为,例如,您在这里调用rbind
n次,每次都调用不断增长的内存(不断增长的内存)并使用rbind
。一种矢量化的方式是(小改进)使用list
结构(链表):
final_results= NULL
i = 1
for (each folder in path) {
proband_results = NULL
for (each file in folder) {
test_result <- someFunction(file)
proband_results = cbind(proband_results,test_result) # column bind
}
final_results[[i]] = proband_results # A list that link all proband results
i = i + 1
}
res = do.call("rbind",final_results) # rbind for all the element in the list
这个版本一劳永逸地执行rbind
。
https://stackoverflow.com/questions/50768354
复制相似问题