【发布时间】:2023-04-08 07:58:01
【问题描述】:
这个问题和这个问题有关dplyr median by group
并且已经在这里回答了:pivot_longer with multiple classes causes error ("No common type")
现在我知道我们应该使用values_transform 而不是values_ptypes。
我想知道这是什么原因? values_ptypes 不起作用而 values_transform 现在起作用的更深层次的原因:
这是导致我遇到此问题的上述示例:
数据框:
df1 <- data.frame(
Type1 = c("A","A","A", "AB", "AB"),
Type2 = c(1L,2L,2L, 1L, 1L),
Value = c(1L, 2L, 1L, NA, NA),
Median = c(1L, 1.5, 1.5, NA, NA))
Type1 Type2 Value Median
1 A 1 1 1.0
2 A 2 2 1.5
3 A 2 1 1.5
4 AB 1 NA NA
5 AB 1 NA NA
我想 pivot_longer 使用 values_ptypes 这样的参数:不起作用!
library(dplyr)
library(tidyr)
df1 %>%
pivot_longer(
cols = contains("Type"),
names_to = "key",
values_to = "val",
values_ptypes = list(val = 'character')
)
Error: Can't convert <integer> to <character>.
Run `rlang::last_error()` to see where the error occurred.
这应该可以组合Type1 和Type2,但它不起作用。
我想知道为什么在这种情况下我不能强制类型转换。
【问题讨论】:
-
相关:pivot_longer with multiple classes causes error ("No common type")。从票数最高的接受答案中:
values_ptypes生成错误; "因此我需要使用values_transform参数" -
非常感谢亨利克。 akrun 在他对这个问题的回答中现在解决了为什么以及如何解决。
-
@TarJae “为什么”是因为您使用了错误的参数,如链接答案中所述。
-
是的,你是对的 Henrik。我不想过分强调它,但请考虑接受的答案使用
values_ptypes并且它有效;一年后,最佳答案指出,现在values_transform将用于猜测 cmets 中的“为什么”。这不足以回答“我的原因”。无论如何,我真的很感谢讨论。我很确定我会永远记住values_transform! :-)
标签: r type-conversion pivot tidyr