R x$data[i,j]中出现错误<;-值:要替换的项目数不是替换长度的倍数

R x$data[i,j]中出现错误<;-值:要替换的项目数不是替换长度的倍数,r,R,我刚升级到R-3.6.0,在创建flextable时,将矩阵转换为数据帧时突然出现了这个错误。我以前从未在代码中遇到过这种错误,也许有人能看到哪里出了问题 这是一个例子: doc201 <- read_docx(path = "Style.docx") Header <- matrix("",1,3) Header[1,1] <- paste("Blabla ") Header[1,2] <- paste("Version:", "1") Header[1,3] <

我刚升级到R-3.6.0,在创建flextable时,将矩阵转换为数据帧时突然出现了这个错误。我以前从未在代码中遇到过这种错误,也许有人能看到哪里出了问题

这是一个例子:

doc201 <- read_docx(path = "Style.docx")
Header <- matrix("",1,3)
Header[1,1] <- paste("Blabla ")
Header[1,2] <- paste("Version:", "1")
Header[1,3] <- format(Sys.Date(), format="%d-%m-%Y")

Head <- flextable(as.data.frame(Header), cwidth = c(3.2,1,2.5))
Head <- delete_part(x = Head, part = "header")
Head <- align(Head, i = 1, j = 1, align = "left") 
Head <- fontsize(Head, size = 11, part = "body")
Head <- bold(Head, bold = TRUE, part = "body")
Head <- font(Head, i = 1, j = (1:3), "Times New Roman", part = "body")

doc201 <- body_add_flextable(doc201, value = Head, pos = "before")

doc201我不确定它是否来自r3.6.0。但是,您可以使用
width()
获得所需的内容。您也可以按原样使用代码,但必须将flextable更新为版本
>0.5.2

library(flextable)
Header <- matrix("",1,3)
Header[1,1] <- paste("Blabla ")
Header[1,2] <- paste("Version:", "1")
Header[1,3] <- format(Sys.Date(), format="%d-%m-%Y")

# you can use one of the following two solutions ----

# solution 1, require flextable > 0.5.2
Head <- flextable(as.data.frame(Header), cwidth = c(3.2,1,2.5))

# solution 2
Head <- flextable(as.data.frame(Header))
Head <- width(Head, width = c(3.2,1,2.5))


# below code is the same than before
Head <- delete_part(x = Head, part = "header")
Head <- align(Head, i = 1, j = 1, align = "left") 
Head <- fontsize(Head, size = 11, part = "body")
Head <- bold(Head, bold = TRUE, part = "body")
Head <- font(Head, i = 1, j = (1:3), "Times New Roman", part = "body")
库(flextable)

Header@RonakShah抱歉,忘了将其添加到问题中。它包含在代码本身中。我现在已经将其编辑到问题中。我刚刚在flextable github repo上为您的问题推出了一个修复程序。您的问题是
cwidth
应该是一个标量。我修复了这个问题,您的代码在新版本中应该运行正常。@DavidGohel很遗憾,我在运行代码时仍然出现错误。您是否使用
remotes::install_github(“DavidGohel/flextable”)
更新了包。版本应该是
>0.5.2
@DavidGohel它只有在我将“cwidth”更改为标量时才起作用。(也许我更新错了)。我不介意调整代码tho,但是有没有其他方法来控制列的大小?(谢谢你的帮助,顺便说一句)这两种解决方案现在都可以工作了——我想我一开始只是没有正确更新。非常感谢。
library(flextable)
Header <- matrix("",1,3)
Header[1,1] <- paste("Blabla ")
Header[1,2] <- paste("Version:", "1")
Header[1,3] <- format(Sys.Date(), format="%d-%m-%Y")

# you can use one of the following two solutions ----

# solution 1, require flextable > 0.5.2
Head <- flextable(as.data.frame(Header), cwidth = c(3.2,1,2.5))

# solution 2
Head <- flextable(as.data.frame(Header))
Head <- width(Head, width = c(3.2,1,2.5))


# below code is the same than before
Head <- delete_part(x = Head, part = "header")
Head <- align(Head, i = 1, j = 1, align = "left") 
Head <- fontsize(Head, size = 11, part = "body")
Head <- bold(Head, bold = TRUE, part = "body")
Head <- font(Head, i = 1, j = (1:3), "Times New Roman", part = "body")