在 R 中使用 `pivot_longer 和 `values_ptypes`
Using `pivot_longer with` `values_ptypes` in R
我的问题很简单:
我一直在尝试将 pivot_longer
与 values_ptypes
一起使用:
这是我的代码:
df <-mtcars %>% rownames_to_column()
df[1,] %>% pivot_longer(everything(),names_to = 'My Values', values_ptypes = list(rowname = 'character'))
df[1,] %>% pivot_longer(everything(),names_to = 'My Values', values_ptypes = list(rowname = as.character))
我有这条消息:Error: Can't combine rowname <character> and mpg <double>.
values_ptypes
的想法是警告 pivot_longer
我有一列是 character
,对吗?
TL;DR:如果您想在旋转时转换变量的 class,请将 values_ptypes
更改为 values_transform
。
所以首先,您得到错误 not 因为 values_ptypes
指定错误,但因为您试图将数字和字符值放入一列中,并且 tidyr
不知道如何:
library(dplyr)
df <- mtcars %>% tibble::rownames_to_column()
df[1, c(1:2)] %>%
tidyr::pivot_longer(
everything(),
names_to = 'My Values'
)
# > Error: Can't combine `rowname` <character> and `mpg` <double>.
其次:values_ptypes
用于确认您的值符合预期,而不是更改它们。
修复
正如@Onyambu 评论的那样,如果你想改变你的价值观,你可以使用 values_transform
:
df[1, ] %>%
tidyr::pivot_longer(
everything(),
names_to = 'My Values',
values_transform = list(value = as.character)
)
结果:
# A tibble: 12 x 2
`My Values` value
<chr> <chr>
1 rowname Mazda RX4
2 mpg 21
3 cyl 6
4 disp 160
5 hp 110
6 drat 3.9
7 wt 2.62
8 qsec 16.46
9 vs 0
10 am 1
11 gear 4
12 carb 4
我的问题很简单:
我一直在尝试将 pivot_longer
与 values_ptypes
一起使用:
这是我的代码:
df <-mtcars %>% rownames_to_column()
df[1,] %>% pivot_longer(everything(),names_to = 'My Values', values_ptypes = list(rowname = 'character'))
df[1,] %>% pivot_longer(everything(),names_to = 'My Values', values_ptypes = list(rowname = as.character))
我有这条消息:Error: Can't combine rowname <character> and mpg <double>.
values_ptypes
的想法是警告 pivot_longer
我有一列是 character
,对吗?
TL;DR:如果您想在旋转时转换变量的 class,请将 values_ptypes
更改为 values_transform
。
所以首先,您得到错误 not 因为 values_ptypes
指定错误,但因为您试图将数字和字符值放入一列中,并且 tidyr
不知道如何:
library(dplyr)
df <- mtcars %>% tibble::rownames_to_column()
df[1, c(1:2)] %>%
tidyr::pivot_longer(
everything(),
names_to = 'My Values'
)
# > Error: Can't combine `rowname` <character> and `mpg` <double>.
其次:values_ptypes
用于确认您的值符合预期,而不是更改它们。
修复
正如@Onyambu 评论的那样,如果你想改变你的价值观,你可以使用 values_transform
:
df[1, ] %>%
tidyr::pivot_longer(
everything(),
names_to = 'My Values',
values_transform = list(value = as.character)
)
结果:
# A tibble: 12 x 2
`My Values` value
<chr> <chr>
1 rowname Mazda RX4
2 mpg 21
3 cyl 6
4 disp 160
5 hp 110
6 drat 3.9
7 wt 2.62
8 qsec 16.46
9 vs 0
10 am 1
11 gear 4
12 carb 4