使用 R 包 'sn' 中的函数 'rmsn' 在随机数生成中未显示列名

Column names not showing in random number generation using function 'rmsn' in R package 'sn'

使用数据框 df,每月包含几只 S&P500 股票 returns,我在 R 包 [=15] 中生成了多元随机正态分布函数 rmsn 所需的输入=]:

library(moments)
library(sn)
muvec = apply(df, 2, mean)
covmat = cov(df)
skew = apply(df, 2, skewness)
rmsn(100, muvec, covmat, skew)

但是,随机生成的数字在我的输入向量中不包含原始列 headers(例如 "A"、"B"、"C")。相反,rmsn 的输出包含通用名称("V1"、"V2"、"V3")。有没有办法确保我的原始列 headers 被传递到输出中?

rmsn 的输出是一个没有名称的矩阵,我假设您正在使用 as.data.frame 将其转换为数据框,并为其提供 default/geenric 列名称。

我认为唯一的方法是从 df

分配列名
out <- as.data.frame(sn::rmsn(100, muvec, covmat, skew))
names(out) <- names(df)