Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

639
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda