R 将_行转换因子/数字列添加到字符中;无法添加有序因子
我需要使用R 将_行转换因子/数字列添加到字符中;无法添加有序因子,r,dplyr,tidyverse,tibble,R,Dplyr,Tidyverse,Tibble,我需要使用tibble::add_row函数将一行添加到现有tibble中 df = tibble(cola = as.ordered(c(1, 2, 3)), colb = as.factor(c("xx", "xxx", "xxx"))) df2 = df %>% add_row(tibble_row(cola = 1, colb = as.factor("yyy"))) 这将我的列cola转换为char
tibble::add_row
函数将一行添加到现有tibble
中
df = tibble(cola = as.ordered(c(1, 2, 3)), colb = as.factor(c("xx", "xxx", "xxx")))
df2 = df %>% add_row(tibble_row(cola = 1, colb = as.factor("yyy")))
这将我的列cola
转换为char
变量。如果我将脚本更改为:
df %>% add_row(tibble_row(cola = as.ordered(1), colb = as.factor("yyy")))
我收到以下错误消息:
错误:无法组合.1$cola
和.2$cola
我尝试了其他数据结构add_row
适用于numeric
和char
数据格式。但是,如果已排序
,则失败。对于新行,除非指定了数据类型(如as.factor
),否则add_row
会将所有因子
静默地转换为char
。这一问题已被报道。但是,我找不到解决方案,例如添加一个参数
,比如stringsAsFactors=T
。用tibble\u row()
或作为tibble\u row()
再加上dplyr::bind\u rows()
将新行设为一个tibble
,也没有帮助,因为它会在有序的因子上抛出相同的错误
我的问题
如何停止add_row
将所有因子转换为字符,而不定义新行中每个相关列的数据结构
add_row
是否可以不处理ordered
因素
您需要指定可用的有序级别:
df %>% add_row(tibble_row(cola = ordered(1, levels = 1:3), colb = as.factor("yyy")))
# A tibble: 4 x 2
cola colb
<ord> <fct>
1 1 xx
2 2 xxx
3 3 xxx
4 1 yyy
df%>%add_行(tibble_行(cola=ordered(1,levels=1:3),colb=as.factor(“yyy”))
#一个tibble:4x2
可乐瓶
1 xx
2 xxx
3 xxx
4.1 yyy
使用的软件包版本是什么?第一列的类型不同,第二列的类型不同levels@akrun分别为'tibble'和'dplyr'的3.0.1和1.0.0。谢谢你对levels的评论。谢谢。我完全没有想到那场争论。我没有足够的分数来提高你的答案分数,但是,我的分数是正确的,至少在第二个问题上是正确的。这解决了我的第二个问题。对问题1有什么想法吗?@TDS困难在于,当你添加一行时,你实际上是在每个向量上添加一个项目,这些向量构成了tibble。当您尝试添加colb=“yyy”
时,您正在指定数据结构:您正在隐式指定字符类型。所以,实际上,R看到您正试图将一个字符连接到一个因子。如果该字符串不作为因子级别存在,R不会简单地将其添加为因子级别。可以为tibble\u行
编写一个包装器来实现这一点,但它不是函数接口的一部分,这是有充分理由的。感谢您的澄清。有道理。