I am running pivot_longer
on multiple columns (i.e. two character columns and one numeric). I am encountering an error related to the class mismatch.
I have investigated the documentation for any "force" options and did not see any arguments within pivot_longer
to specify the class to use -- or to allow the function auto-detect the most general class.
Are there any parameters within pivot_longer
to avoid this error? Or do you need to convert the columns to a single class before running pivot_longer
?
library(dplyr)
library(tidyr)
library(ggplot2) # Just for `diamonds` dataset
small_diamonds <- diamonds %>%
# Select a few columns (two character, one numeric, specifically integers)
select(cut, color, price) %>%
# Create a row_id
mutate(row_num = row_number())
# This works with `gather`
small_diamonds %>%
gather(key, val, - row_num)
# This fails due to class error:
small_diamonds %>%
# Pivot data
pivot_longer( - row_num,
names_to = "key",
values_to = "val")
# Output
# Error: No common type for `cut` <ordered<4bd7e>> and `price` <integer>.
# Call `rlang::last_error()` to see a backtrace
# Convert columns to a single class (character) and then use `pivot_longer`.
# Runs successfully
small_diamonds %>%
mutate_all(as.character) %>%
# Pivot data
pivot_longer( - row_num,
names_to = "key",
values_to = "val")
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…