比如说,我有n个受试者,每个受试者重复t次.如果我想创建一个 Select 矩阵,它将如下所示

n = 5
t = 3
Select_M = diag(n) %x% matrix(1, t)

Select_M
      [,1] [,2] [,3] [,4] [,5]
 [1,]    1    0    0    0    0
 [2,]    1    0    0    0    0
 [3,]    1    0    0    0    0
 [4,]    0    1    0    0    0
 [5,]    0    1    0    0    0
 [6,]    0    1    0    0    0
 [7,]    0    0    1    0    0
 [8,]    0    0    1    0    0
 [9,]    0    0    1    0    0
[10,]    0    0    0    1    0
[11,]    0    0    0    1    0
[12,]    0    0    0    1    0
[13,]    0    0    0    0    1
[14,]    0    0    0    0    1
[15,]    0    0    0    0    1

我感兴趣的是每个科目都有不同的时间段.换句话说,第一个主题重复7次,第二个主题重复11次,以此类推.

我如何才能有效地为这些特定重复创建 Select 矩阵?

推荐答案

您可以定义一个指示不同时间段的系数列,然后使用model.matrix()根据它创建一个不带截距项的设计矩阵.

例如,第一个主题重复2次,第二个主题重复3次,第三个主题重复4次,可以按如下方式try :

t = c(2, 3, 4)

data.frame(sub = factor(rep(seq_along(t), t))) |>
  model.matrix(~ sub - 1, data = _)

#   sub1 sub2 sub3
# 1    1    0    0
# 2    1    0    0
# 3    0    1    0
# 4    0    1    0
# 5    0    1    0
# 6    0    0    1
# 7    0    0    1
# 8    0    0    1
# 9    0    0    1

R相关问答推荐

根据R中另一个数据集的顺序重新排序数据集的列

为什么predicate.lm给出的是一个长度与我解析的数据集不同的载体?

根据列中的数字移动单元格位置

从R中的函数中提取变量以及它们来自哪些环境?

给定R中另一行中的值,如何插补缺失值

在ComplexHeatmap中,如何更改anno_barplot()标题的Angular ?

如何从其他前面列中减go 特定列的平均值?

在ggplot Likert条中添加水平线

如何使用R Shiny中的条件面板仅隐藏和显示用户输入,同时仍允许运行基础计算?

如何求解arg必须为NULL或deSolve包的ode函数中的字符向量错误

过滤器数据.基于两列的帧行和R中的外部向量

在R中使用Scale_y_Break后更改y轴标签

在R函数中使用加号

在R中,我如何使用滑动窗口计算位置,然后进行过滤?

从多层嵌套列表构建Tibble?

有没有办法一次粘贴所有列

R中时间间隔的大向量与参考时间间隔的相交

无法将条件case_when()应用于使用!!创建的新变量Mutations

如何使用ggplot2根据绘图中生成的斜率对小平面进行排序?

使用R、拼图和可能的网格包绘制两个地块的公共垂直线