Comments (5)
In the following example, spread.integer
has the expected shape—three columns y, a and b—but spread.factor
does not have the expected shape. It has instead two columns, and the second column is a matrix.
> str(spread.integer)
'data.frame': 2 obs. of 3 variables:
$ y: Factor w/ 2 levels "c","d": 1 2
$ a: int 1 2
$ b: int 3 4
> str(spread.factor)
'data.frame': 2 obs. of 2 variables:
$ y : Factor w/ 2 levels "c","d": 1 2
$ ordered: factor [1:2, 1:2] w x y z
..- attr(*, "levels")= chr "w" "x" "y" "z"
..- attr(*, "dimnames")=List of 2
.. ..$ : NULL
.. ..$ : chr "a" "b"
from tidyr.
Slightly simpler MRE
library(dplyr)
library(tidyr)
data <- data.frame(x = c("a", "a", "b", "b"), y = c("c", "d", "c", "d"), z = c("w", "x", "y", "z"))
data %>% spread(x, z) %>% str()
data %>% mutate(z = as.integer(z)) %>% spread(x, z) %>% str()
from tidyr.
Root cause is that as.data.frame()
does not work nicely on 2-d factors:
x <- factor(letters[1:4])
dim(x) <- c(2, 2)
as.data.frame(x)
from tidyr.
Better now, although the output columns are characters. I'm not sure if this reasonable, or if each column should be a factor with the same levels.
from tidyr.
Thanks, Hadley. Better would be that the output columns are factors with the same levels as the input.
from tidyr.
Related Issues (20)
- Release tidyr 1.3.1
- separate_wider_delim changes input column names when using names_sep with cols_remove=FALSE HOT 1
- Change in pivot_wider behavior and error messages when using column numbers for `id_cols` HOT 1
- Feature request: function count the missing value
- Feature request: `.vary` in `expand_grid()`
- Solutions for a crowded namespace: selective removal of items? Any better ideas?
- int64 summation fails HOT 3
- Error in tidyr package & issue with columns being added to Markdown output where used to put into rows (no change to code) HOT 10
- keep getting the error while running RStudio R 4.3.3 on MacOS Big Sur HOT 1
- Better error message for empty tidyselect quosure HOT 2
- In `separate_wider_delim()`, could `merge` have an option for `too_many = "merge_end"`
- num_range() with multiple-specified prefixes gives alternating result HOT 1
- `slice()` behaves differently to `head()` on nested tibbles vs. unnested tibbles. HOT 2
- unnest_longer with multiple cols - values_to=glue::glue({col}_long) not working
- `drop_na()` loses extra classes for `tbl_df`s
- Use base pipe in examples HOT 3
- Feature request: `fill(.direction = "sandwich")` HOT 1
- typos
- Intermittent "reached elapsed time limit" when nesting
- Tibble error
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from tidyr.