---
source_url: https://docs.dolphindb.cn/zh/funcs/m/mfirstnot.html
fetched_at: 2026-05-19T09:31:40Z
category: funcs
title: mfirstNot
sha1: e301b4f5d36b35b9a65f37871ce8235eb7277d0c
---

# mfirstNot

## 语法

`mfirstNot(X, window, [k=NULL], [minPeriods=1])`

窗口计算规则请参考：[mFunctions](../themes/mFunctions.html)

## 详情

若 *X* 是向量：

- 如果没有指定 *k*，计算给定长度（以元素个数或时间长度衡量）的滑动窗口内 *X* 中第一个不为 NULL 的元素。
- 如果指定 *k*，计算给定长度（以元素个数或时间长度衡量）的滑动窗口内 *X* 中第一个不为 *k* 或 NULL
  的元素。

若 *X* 是矩阵或表，则在每列内进行上述计算。

## 参数

**X**  是一个向量/矩阵/表/元组（元素为标量或等长向量）/字典。

**window** 是大于等于 2 的正整型或 DURATION 标量。表示滑动窗口的长度。

注：

在流计算引擎中调用滑动窗口函数时，window 的上限为 102400。

**k** 可选参数，是一个数值或字符串类型的标量，表示用于匹配的数据。

**minPeriods** 是一个正整数。为滑动窗口中最少包含的观测值数据。

## 返回值

- 当 *X* 是向量时，返回一个向量。
- 当 *X* 是矩阵时，返回一个矩阵。
- 当 *X* 是表时，对表的每列进行计算，返回相应的结果。
- 当 *X* 是元组时，对元组中的每个向量分别计算，返回相应的结果。

## 例子

例 1

```dolphindb
X = NULL 2 NULL 4 5
mfirstNot(X=X, window=2)
// output: [,2,2,4,4]
```

例 2

```dolphindb
x = matrix(1..5,2..6,3..7)
mfirstNot(X=x, window=3, k=1, minPeriods=2)
```

| #0 | #1 | #2 |
| --- | --- | --- |
|  |  |  |
| 2 | 2 | 3 |
| 2 | 2 | 3 |
| 2 | 3 | 4 |
| 3 | 4 | 5 |

例 3

```dolphindb
x=table(["s1", "s2", "", "s4", "s5"] as col1, ["s1", "", "s3", "", "s5"] as col2)
mfirstNot(X=x, window=2)
```

| #0 | #1 |
| --- | --- |
|  |  |
| s1 | s1 |
| s2 | s3 |
| s4 | s3 |
| s4 | s5 |

例 4

```dolphindb
T = [2022.01.01, 2022.01.02, 2022.01.03, 2022.01.06, 2022.01.07, 2022.01.08, 2022.01.10, 2022.01.11]
X = 1..8
X1 = indexedSeries(T, X)
mfirstNot(X=X1, window=3, k=1, minPeriods=1)
```

|  | #0 |
| --- | --- |
| 2022.01.01 |  |
| 2022.01.02 | 2 |
| 2022.01.03 | 2 |
| 2022.01.06 | 4 |
| 2022.01.07 | 4 |
| 2022.01.08 | 4 |
| 2022.01.10 | 6 |
| 2022.01.11 | 7 |
