r具有多个列集的.SD的data.table用法以获取RMSPE

时间:2018-06-04 09:09:13

标签: r data.table lapply

我有一个数据集,我做了一些预测。我现在想要计算 RMSPE ,为此我正在使用 MLmetrics 包,因为我通过预测和实际的输入理解我会得到 RMSPE 。我怎么会混淆如何在 data.table 中使用它来传递2组列。

我的示例数据集如下所示 -

final Image closedImage = new Image(getClass().getResourceAsStream("folder.png"));
final Image openImage = new Image(getClass().getResourceAsStream("folder-open.png"));

tree.setCellFactory(param -> new TreeCell<File>() {

    {
        final ImageView imageView = new ImageView();
        imageView.setFitWidth(20);
        imageView.setFitHeight(20);

        final ChangeListener<Boolean> expansionListener = new WeakChangeListener<>((o, oldValue, newValue) -> {
            imageView.setImage(newValue ? openImage : closedImage);
        });

        // add change listener to expanded property of item
        treeItemProperty().addListener((o, oldValue, newValue) -> {
            if (oldValue != null) {
                oldValue.expandedProperty().removeListener(expansionListener);
            }
            if (newValue != null) {
                newValue.expandedProperty().addListener(expansionListener);
                expansionListener.changed(null, null, newValue.isExpanded()); // trigger for initial value
            }
        });

        setDisclosureNode(imageView);
    }

    @Override
    public void updateItem(File item, boolean empty) {
        super.updateItem(item, empty);

        setText((empty || item == null) ? "" : item.getName());
    }
});

所以在这种情况下,a1,a2,a3,a4,a5是我的实际值,p1,p2,p3,p4,p5是我的预测值。我想将p1,p2,p3,p4,p5作为x传递和a1,a2,a3,a4,a5为y。我期望的结果输出是一种包含4行(每个城市一个)和6列的汇总表,第一个用于城市,第2-6列用于每个变量的 RMSPE

如何在data.table中获取此信息。我应该用

替换 xxxx

谢谢!

1 个答案:

答案 0 :(得分:2)

我不确定这是否是您要找的

colsToKeep <- c("a1", "a2", "a3", "a4", "a5")
colsToW <- c("p1", "p2", "p3", "p4", "p5")


df1[, Map(function(x,y, w) get(x)(y, w), 
          setNames(rep('RMSPE',length(colsToKeep)), paste("RMSPE", colsToKeep, colsToW, sep = "_")),
          .SD[, ..colsToKeep], .SD[, ..colsToW]),
    by = city]