0
votes

RollApplyR () ne crée qu'une nouvelle colonne au lieu de plusieurs colonnes pour chaque colonne de .sdcols

J'essaie d'utiliser rollapplyr () sur une table de données, utilisez-le pour générer divers colonnes via .sdcols . Plutôt que de mettre les résultats pour une colonne à côté des résultats pour une autre colonne, toutefois, rollApplyR () stacks les résultats pour chaque colonne ci-dessous. Au-dessous du code pour illustrer ce que je veux dire: xxx

Ce code génère une donnée de deux colonnes (cyl et V1) de 64 lignes plutôt que d'une table de données de trois colonnes (Cyl, V1 et v2) de 32 colonnes. Y a-t-il un moyen d'obtenir ce dernier?


0 commentaires

3 Réponses :


2
votes

Vous pouvez essayer: xxx

sortie: xxx


0 commentaires

2
votes

Utiliser PApply pour boucler sur des colonnes sélectionnées dans .sdcols et utilisez macols pour affecter les valeurs à. xxx


0 commentaires

1
votes

Le problème est que rollApplyR code> produit une matrice, tandis que les données. La carte attend une liste, des données.frame ou des données.Table. Il suffit de le convertir et vous devriez être correct. De plus, vous n'avez pas besoin align = "droit" code> si vous utilisez rollApplyR code> avec un r code> à la fin.

cars[, as.data.table(rollapplyr(.SD, mean, width = 3, partial = TRUE)), 
     by = cyl, 
     .SDcols = c('mpg', 'hp')]


0 commentaires