2017-12-26 12 views
0

.Rmdで編んだとき、Rのdummiesパッケージで非常に奇妙な挙動に気づいただけです。ここに再現可能な例があります。私はdfを表示するときに、私が見て期待してい何Rのダミーパッケージ.Rmdで編まれたときの奇妙な列名

--- 
title: "Dummies Package Behavior" 
author: "Kim" 
date: '`r Sys.Date()`' 
output: 
    pdf_document: 
    toc: yes 
    toc_depth: '3' 
--- 

Load the libraries 

```{r} 
library(tidyverse) 
library(dummies) 
``` 

Main data wrangling 

```{r} 
df <- data_frame(year = c(2016, 2017, 2018)) 
temp <- dummy(df$year) 
temp <- as_data_frame(temp) 
df <- bind_cols(df, temp) 
``` 

View output 

```{r} 
df 
``` 

dummiesパッケージの正常な動作である、0-1 year2016year2017の列、およびyear2018いいです。

RStudioでこのR Markdownドキュメントを編成すると、代わりにC:/Users/Kim/Desktop/dummies.Rmd2016,C:/Users/Kim/Desktop/dummies.Rmd2017、およびC:/Users/Kim/Desktop/dummies.Rmd2018が表示されます。つまり、文書アドレス全体を使用して列名を作成します。

このような現象が発生する理由はわかりません。明らかに、カラム名はyear2016,year2017year2018としたいと思います。

答えて

1

data.frame()で再現できるので、問題はdplyrとは関係ありません。明らかに、R Markdown文書の一部として実行されたときに、dummy()関数に列ラベルを割り当てることに問題があります。ルークの答えに記載されているように、回避策の1つはdummy.data.frame()です。もう1つは、年とダミー変数をcbind()でバインドした後に列の名前を変更するcolnames()関数を使用し、dplyrベースのソリューションを有効にすることです。

これはおそらくdummiesパッケージのバグレポートとして提出する必要があります。

--- 
title: "Behavior of dummies package" 
author: "anAuthor" 
date: "12/26/2017" 
output: 
    html_document: default 
    pdf_document: default 
    word_document: default 
--- 

```{r setup, include=FALSE} 
knitr::opts_chunk$set(echo = TRUE) 
``` 

# first, reproduce error with data.frame() 

```{r} 
library(dummies) 
df <- data.frame(year = c(2016, 2017, 2018)) 
df 
dummyCols <- dummy(df$year) 
dummyCols <- as.data.frame(dummyCols) 
dummyCols 
``` 

# data.frame() approach to fix the error 

```{r} 
df <- data.frame(year = c(2016, 2017, 2018)) 
df 
dummyCols <- dummy.data.frame(data=df,dummy.classes="ALL") 
dummyCols 
df <- cbind(df, dummyCols) 
df 
``` 

...と出力が最初にエラーを再現します。

enter image description here

...秒、エラーを回避するためにdummies.data.frame()を使用。

enter image description here

次のようにdplyr補正が動作します。

# dplyr approach 

```{r} 
library(tidyverse) 
df <- data_frame(year = c(2016, 2017, 2018)) 
temp <- dummy(df$year) 
temp <- as_data_frame(temp) 
df <- bind_cols(df, temp) 
colnames(df) <- c("year",unlist(lapply(2016:2018,function(x) { 
    paste("year",x,sep="") 
}))) 
df 
``` 

enter image description here

+1

あなたレンありがとうございます。私は本当に ''ダミー ''のパッケージのバグレポートを提出するつもりです。 – Kim

1

私は、その相互作用が起こっている理由はわからないんだけど、このわずかな変更は、それを回避するようだ:data.frameはベースからdplyrからではなく、data_frameを作るように見えること

```{r} 
df <- data.frame(year = c(2016, 2017, 2018)) 
df <- data.frame(df, dummy.data.frame(data = df, dummy.classes = "ALL")) 
``` 

​​

注意違い。

関連する問題