r - 生成大向量的所有排列并有效地执行计算
问题描述
我有一个长度为 445 的向量“perm”,其中包括 260 个零和 185 个。我需要生成所有可能排列的矩阵。然后我需要有效地执行几个计算。我已经设法做到了这一点,但并不完全且效率不高(我使用了循环)。我需要帮助来改进我的代码,因为它很有启发性。
首先,由于 R 不允许我创建这个巨大的排列矩阵,我使用 'ri' 包随机抽样 100,000 个排列。
library(ri)
lalonde <- read.csv('lalonde.csv')
perms <- genperms(lalonde$treat, maxiter=100000)
相反,我希望能够生成完整的排列矩阵(或列表列表,如果效果更好的话)。
然后,我将原始数据集 lalonde 与排列数据集合并。
lalonde1 <- data.frame(perms, lalonde)
我创建了一个空向量,在其中存储了后面的循环的输出
diff_vec <- vector(mode='list', length=100000)
我创建了一个循环,计算每个置换向量的绝对条件差。我将结果存储在空向量中。这远非有效,如果我能得到一些关于如何做得更好的建议,我将不胜感激。
for (i in 1:100000) {
diff_vec[i] <- abs((mean(lalonde1[lalonde1[[i]]==1,"re78"])-mean(lalonde1[lalonde1[[i]]==0,"re78"])))
}
最后,对于平均值的每个绝对差,检查它是否大于或等于我存储的值,如果是则分配 1,否则分配 0。
p_val<-ifelse(diff_vec>=tau_hat, 1, 0)
对于那些关心的人,这是在一个完全随机的实验中计算一个精确的 p 值。
解决方案
推荐阅读
- c++ - Sorting a vector
- android - Byte-Order-Mark in file name when writing to xml
- python - AWS EC2 machine giving "pytesseract.pytesseract.TesseractNotFoundError: tesseract not installed or it's not in your path"
- node.js - Node js / Express js form do not expire after posting data
- html - How can I align an element with a display table? If you already apply display table-cell to your child?
- javascript - How to generate a unique div id for django objects displayed in template
- amazon-ses - Verifying DKIM for AWS SES when can't add CNAME to root domain
- azure - How to manage CosmosDB Stored procedures, Function and Triggers as like SQL DB project
- c# - C# XNA error box "NullReferenceException was unhandled", "Object reference not set to an instance of an object."
- r - 根据月度股票收益创建累积收益指数