提问人:MinChul Park 提问时间:10/31/2023 最后编辑:Nick CoxMinChul Park 更新时间:10/31/2023 访问量:38
Mata 中的逻辑子集
Logical Subsetting in Mata
问:
在 Mata(Stata 中的矩阵语言)中,我试图找到逻辑子集或等效子集。
假设我们有一个矩阵:
clear all
version 18
mata: tmp = (-0.5, 1 \ 5, -5)
在这里,我想分别用 1 和 -1 替换正数和负数。(也就是说,在我的问题中,只有迹象很重要)
所以,我想要的结果是
1 2
+-----------+
1 | -1 |
2 | 1 -1 |
+-----------+
如果我使用的是 R,我可能会使用如下所示的逻辑子集:
tmp <- matrix(c(-0.5, 1, 5, -5), 2, 2, byrow = TRUE)
> tmp
[,1] [,2]
[1,] -0.5 1
[2,] 1.0 -5
tmp[tmp > 0] <- 1
tmp[tmp < 0] <- -1
> tmp
[,1] [,2]
[1,] -1 1
[2,] 1 -1
但我找不到如何在马塔做同样的事情。
答:
2赞
Nick Cox
10/31/2023
#1
这只是函数的一个案例。sign()
. mata
------------------------------------------------- mata (type end to exit) --------------------------------------------------------------
: tmp = (-0.5, 1 \ 5, -5)
: sign(tmp)
[symmetric]
1 2
+-----------+
1 | -1 |
2 | 1 -1 |
+-----------+
我不是 R 专家,但我有信心猜测 R 也有这样的功能,所以有一个同样直接的解决方案。
评论
0赞
Nick Cox
10/31/2023
我查了一下。 在 R 中被记录为向量的工作。它是否也适用于矩阵,或者如何将其应用于矩阵是 R 人员的问题。sign()
0赞
MinChul Park
10/31/2023
谢谢,我不知道那种功能。这正是我想做的!
1赞
jay.sf
11/1/2023
sign
是矢量化的,适用于矩阵,例如。matrix(-2:2, 3, 5) |> sign()
0赞
Nick Cox
11/1/2023
@jay.sf 这很好听,并且与我答案中的猜测相符,但我没有从文档中推断出来。
评论
mata