我正在使用求和对列进行计算。我想手动将 calc 列中的前 n 个条目从 float 更改为 NaN。有人可以告诉我该怎么做吗?
例如,如果我在表 t 中的列现在是 mycol:(1 2 3 4 5 6 7 8 9),我正在尝试获得一个可以用 NaN 替换前 n=4 个条目的函数,所以我的列在表 t 中变成 mycol:(0N 0N 0N 0N 5 6 7 8 9)
非常感谢!
艾米丽
答案 0 :(得分:1)
我们可以使用修改功能将前 n 项替换为空值。此外,最好根据类型为每列使用适当的空字面量。像这样的事情会起作用:
f: {nullDict: "ijfs"!(0Ni;0Nj;0Nf:`); @[x; til y; :; nullDict .Q.ty x]}
这将修改列表 x 中的前 y 个项目。 .Q.ty
将获取输入的类型,以便我们可以从字典中获取相应的值。
然后您可以将其用于单个列,如下所示:
update mycol: f[mycol;4] from tbl
您也可以一次性执行此操作,以使用函数形式替换具有不同数量项目的多列:
![tbl;();0b;`mycol`mycol2!((f[;4];`mycol);(f[;3];`mycol2))]
请注意,您需要将 nullDict
修改为您需要的任何其他类型。
更新:感谢 Jonathon McMurray 提出了一种使用以下代码为所有原始类型构建 nullDict
的更好方法:
{x!first each x$\:()}.Q.t except " "