r - 如何制作一个矩阵,每行只有两个数值,其他地方有 NA?
问题描述
我正在尝试创建一个模拟矩阵/数据框,其中每行包含两个数值,其他任何地方都包含 NA。我试图模拟一个有 5 个因素(列)的资金分配实验,在其中 2 个因素之间,受试者必须分配他们的钱。
前三行如下所示:
NA NA 30 NA 70
25 NA NA 75 NA
60 40 NA NA NA
...
我设想100行左右。行总数应始终为 100。
解决方案
您可以执行以下操作:
set.seed(5)
# Create matrix of NAs
m <- matrix(ncol = 5, nrow = 5)
nr <- nrow(m)
nc <- ncol(m)
# Create replacement indices (two unique row indices)
idx <- cbind(rep(sequence(nr), each = 2), c(replicate(nr, sample(nc, 2, replace = FALSE))))
# Create replacement values
vals <- c(replicate(nc, c({x <- sample(100, 1)}, 100 - x)))
m[idx] <- vals
m
[,1] [,2] [,3] [,4] [,5]
[1,] NA 28 72 NA NA
[2,] NA 50 NA NA 50
[3,] 32 NA 68 NA NA
[4,] NA NA 56 44 NA
[5,] 73 NA NA NA 27
推荐阅读
- laravel - 为什么在某些环境中找不到这个 Laravel 外观?
- gcc - 如何告诉 GCC 不要将 main 的堆栈与 16 字节边界对齐?
- javascript - 如何使用 FeathersJS 检查服务器中的用户身份验证?
- c++ - 有没有办法将位从双精度复制到 uint64 而不进行类型转换或内存溢出?
- c - 内联汇编中的结构偏移
- asp.net-core - 何时使缓存无效 - .net core api
- c# - 在 android 中使用 volley 调用 C# Web 服务的方法
- python - Python如何检测线程连接是否超时
- powershell - 应该使用什么运算符来检测空的 psobject?
- python - 如何使用 Boto3 和 Python 将 lambda 函数订阅到 DynamoDB 流?