Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error when trying to output rtf file with missing fields #146

Closed
riawoo opened this issue Mar 15, 2023 · 7 comments
Closed

Error when trying to output rtf file with missing fields #146

riawoo opened this issue Mar 15, 2023 · 7 comments

Comments

@riawoo
Copy link

riawoo commented Mar 15, 2023

Hi there!

image

I have defined a table format for the attached dataframe and now trying to output into rtf file, however I am getting the below error message. I am thinking that possibly the issue is because I have missing values in the "pedesc" col. What can I do to prevent this from happening?

Error in if (nc[currentIndex] == 0L) upperBlockIndex <- c(upperBlockIndex, :
missing value where TRUE/FALSE needed

@elong0527
Copy link
Collaborator

please provide reproducible examples with a dummy dataset following https://reprex.tidyverse.org/index.html

@riawoo
Copy link
Author

riawoo commented Mar 15, 2023

r2rtf package version is 1.01

structure(list(subjid = c("R001", "R001", "R001", "R001"), dosegrp.factor = structure(c(1L, 
1L, 1L, 1L), levels = "Active Control Group", class = "factor"), 
    visit = structure(c(1L, 1L, 1L, 1L), levels = "Screening", class = "factor"), 
    pecat = c("Complete", "Complete", "Complete", "Complete"), 
    pedat = structure(c(19278, 19278, 19278, 19278), class = "Date"), 
    petim = c("12:19", "12:19", "12:19", "12:19"), date_diff_ca = c(-14, 
    -14, -14, -14), petest_updated = c("Abdomen", "Chest", "Head / Neck / Ears / Eyes / Nose / Mouth / Throat", 
    "Heart / Circulation"), peorres = structure(c(1L, 1L, 1L, 
    1L), levels = "Normal", class = "factor"), pedesc = c(NA_character_, 
    NA_character_, NA_character_, NA_character_)), row.names = c(NA, 
-4L), class = c("tbl_df", "tbl", "data.frame"))
#>   subjid       dosegrp.factor     visit    pecat      pedat petim date_diff_ca
#> 1   R001 Active Control Group Screening Complete 2022-10-13 12:19          -14
#> 2   R001 Active Control Group Screening Complete 2022-10-13 12:19          -14
#> 3   R001 Active Control Group Screening Complete 2022-10-13 12:19          -14
#> 4   R001 Active Control Group Screening Complete 2022-10-13 12:19          -14
#>                                      petest_updated peorres pedesc
#> 1                                           Abdomen  Normal   <NA>
#> 2                                             Chest  Normal   <NA>
#> 3 Head / Neck / Ears / Eyes / Nose / Mouth / Throat  Normal   <NA>
#> 4                               Heart / Circulation  Normal   <NA>

Created on 2023-03-15 with reprex v2.0.2

listing31_rtf <- PE_Data %>%
  rtf_page(
    orientation = "landscape"
  ) %>%
  rtf_page_header(
    text = c(paste0(PageHeader1), paste0(PageHeader2), paste0(PageHeader3)),
    text_justification = c("r", "l", "l"),
    text_font = 9,   # Courier New
    text_font_size = 8
  ) %>%
  rtf_page_footer(
    text = c("Notes:    Day relative to Challenge agent is the number of days relative to day of administration of the challenge agent, where day of administration = 0.",
             "",
             paste0("Printed: ", CurrentDate, " (", TFLVersion, ")")),
    text_font = 9,   # Courier New
    text_justification = "l",
    text_font_size = 8
  ) %>%
  rtf_title("Listing 31", "Physical Examination",
    text_font = 9,   # Courier New
    text_font_size = 8
  ) %>%
  rtf_colheader("Subject Number | Treatment Group | Visit | Type of Examination | Date of Exam | Time of Exam | Day Relative to Challenge Agent | Anatomical Site | Result | Description of Abnormality",
    col_rel_width = c(1,1,1,1,1,1,1,1.5,1,1.5),
    text_font = 9,   # Courier New
    text_justification = "c",
    text_font_size = 8,
    text_format = "b"
  ) %>%
  rtf_body(
    group_by = c("subjid", "dosegrp.factor", "visit", "pecat", "pedat", "petim", "date_diff_ca"), 
    col_rel_width = c(1,1,1,1,1,1,1,1.5,1,1.5),
    text_font = 9,   # Courier New
    text_justification = "c",
    text_font_size = 8,
    border_top = "single"
  )
#> Error in PE_Data %>% rtf_page(orientation = "landscape") %>% rtf_page_header(text = c(paste0(PageHeader1), : could not find function "%>%"

# Output .rtf file
listing31_rtf %>%
  rtf_encode() %>%                                                   
  write_rtf(file = "31_Listings_Physical_Examination.rtf")
#> Error in listing31_rtf %>% rtf_encode() %>% write_rtf(file = "31_Listings_Physical_Examination.rtf"): could not find function "%>%"

Created on 2023-03-15 with reprex v2.0.2

I hope this is all you need but let me know if you need anything else! I am pretty new to R and self-learning, so hope you can bear with me!

@elong0527
Copy link
Collaborator

Thanks!

The error messages from the code is not the same as your original post. Could you load all proper packages and rerun the code? So we are able to see the exact errors message.

@riawoo
Copy link
Author

riawoo commented Mar 15, 2023

I am not sure why "Could not find function "%>%" error messages get created when I run the reprex function. I think this has something to do with the reprex function and you can probably ignore these.

The error messages I get when running the rtf_encode() and write_rtf() is this:
Error in if (nc[currentIndex] == 0L) upperBlockIndex <- c(upperBlockIndex, :
missing value where TRUE/FALSE needed

@elong0527
Copy link
Collaborator

I can reproduce the error now. The error message basically means you need to load the R package magrittr before using the %>% pipe function.

To reproduce the error, we need to add additional code before execute your code.

library(dplyr)
library(r2rtf)

PageHeader1 <- "a"
PageHeader2 <- "b"
PageHeader3 <- "c"
CurrentDate <- "d"
TFLVersion <- "e"

@elong0527
Copy link
Collaborator

Here is the ad-hoc way to solve the bug.

With r2rtf v1.0.1, replace all missing values to an empty string using code below before you execute all other code.

PE_Data$pedesc <- ifelse(is.na(PE_Data$pedesc), "", PE_Data$pedesc)

I also fixed the bug in the PR #147 , but I need to submit a newer package version to CRAN before the bug disappear from your end. Otherwise, you need to use development version of the package.

@riawoo
Copy link
Author

riawoo commented Mar 15, 2023

Yes, this worked! Thanks for your help.

@riawoo riawoo closed this as completed Mar 15, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants