Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

635
Views
Hipervínculo al valor de celda en R brillante (con muchas columnas)

Quiero generar hipervínculos a partir de mis valores de tabla de datos. Encontré esta solución Cómo crear un hipervínculo al valor de la celda en R brillante y era perfecta, pero era solo para una columna. Ahora también necesito una alternativa donde los hipervínculos estén en todas las columnas. Al poner targets = "_all" en columnDefs , hice un hipervínculo en cada celda, pero mi problema es que si hago clic en ese valor de celda (por ejemplo, en LPE(18:1) ), el enlace generado se compone de cada valor en esa fila . Creo que la solución es pasar el índice de fila y columna a la función de representación, pero no tengo idea de cómo hacerlo. He aquí un ejemplo reproducible.

 library(shiny) data_input <- data.frame( List = c("Cer(d18:1/16:0)", "DGDG(16:0/18:0)", "PS(18:0/18:1)"), Feature = c("LPE(18:1)", "LPE(20:4)",NA ), Location = c("MGDG(16:0/18:0)", "MGDG(18:0/18:0)" , "TG(18:1/18:1/18:1)") ) render <- c( "function(data, type, row){", " if(type === 'display'){", " var a = '<a href=\"http://www.swisslipids.org/#/search/' + row + '\">' + data + '</a>';", " return a;", " } else {", " return data;", " }", "}" ) ui <- fluidPage( titlePanel("Table with Links!"), sidebarLayout( sidebarPanel( h4("Click the link in the table to go to the url listed.") ), mainPanel( dataTableOutput('table1') ) ) ) server <- function(input, output) { output$table1 <- renderDataTable({ datatable(data_input, rownames = T, options = list( columnDefs = list( list(targets = "_all", render = JS(render)), list(targets = "_all", className = "dt-center") ) ) ) }) } shinyApp(ui, server)

Además, de forma predeterminada, si el valor de una celda es NA, esa celda en la tabla de datos estará en blanco, pero en este caso se escribe null y también tiene un hipervínculo. ¿Hay alguna solución para no generar un hipervínculo para esas celdas? ¿Solo quiero que permanezcan en blanco?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

@Stéphane Laurent sabrá mejor que yo, pero podría probar esto como su renderizador JS. Puede verificar si data son NULL si su declaración if , y probablemente debería incluir data en su referencia de hipervínculo en lugar de "fila". Pruebe esto y déjeme saber si esto ayuda.

 render <- c( "function(data, type, row){", " if(type === 'display' && data){", " var a = '<a href=\"http://www.swisslipids.org/#/search/' + data + '\">' + data + '</a>';", " return a;", " } else {", " return data;", " }", "}" )

Editar : si tiene "Cer (d18: 1_16: 0) + OH" como entrada en una celda, pero desea usar "Cer (d18: 1/16: 0)" en su enlace, puede usar la función de replace y encadenarlos para múltiples reemplazos. En este caso, use /g para el modificador global. Puede ajustar la expresión regular para sus necesidades particulares.

 render <- c( "function(data, type, row){", " if(type === 'display' && data){", " var newstr = data.replace(/_/g, '/').replace(/\\).*/g, ')');", " var a = '<a href=\"http://www.swisslipids.org/#/search/' + newstr + '\">' + data + '</a>';", " return a;", " } else {", " return data;", " }", "}" )
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!