Как отфильтровать столбцы, содержащие гиперссылки в r DT

У меня есть столбец «url», содержащий гиперссылки. Тексты ссылок целые. Как я могу заставить фильтрацию столбцов работать в DataTables, чтобы фильтрация выполнялась с использованием текстов ссылок вместо html гиперссылки? Ниже приведен пример:

library(DT)
df <- data.frame(Val = c("A", "B"), url = c("<a href='https://www.google.com'>1</a>", "<a href='https://www.google.com'>2</a>"))
datatable(df, escape = FALSE, filter = list(position = "top"))

В приведенной выше таблице данных я хотел бы отфильтровать строки на основе значений 1 и 2 в столбце url. Вот что сейчас происходит. image


r dt
person aleksip    schedule 09.08.2017    source источник
comment
Если я не неправильно понимаю вопрос, похоже, что он уже делает именно то, что вы спрашиваете. Вы пытаетесь отфильтровать столбец URL-адреса на основе 1 и 2?   -  person be_green    schedule 09.08.2017
comment
Я отредактировал приведенный мной пример. Я бы хотел отфильтровать строки на основе значений 1 и 2 в столбце url. Это немного вводило в заблуждение, так как у меня также были 1 и 2 в столбце val, поэтому я изменил их на A и B.   -  person aleksip    schedule 10.08.2017
comment
О, теперь я понимаю, что я тоже не ожидал, что он будет вести себя!   -  person be_green    schedule 10.08.2017


Ответы (2)


library(DT)

render <- c(
  "function(data, type, row){",
  "  if(type === 'display'){",
  "    var a = '<a href=\"' + row[3] + '\">' + data + '</a>';",
  "    return a;",
  "  } else {",
  "    return data;",
  "  }",
  "}"
)

df <- data.frame(
  Val = c("A", "B"), 
  url = c("google", "stackoverflow"),
  href = c("https://www.google.com", "https://www.stackoverflow.com")
)
datatable(df, escape = FALSE, filter = list(position = "top"), 
          options = list(
            columnDefs = list(
              list(targets = 2, render = JS(render)),
              list(targets = 3, visible = FALSE)
            )
          )
)

введите здесь описание изображения

person Stéphane Laurent    schedule 14.06.2019

Вам нужно, чтобы текст URL был целым числом? Если нет, быстрый и грязный способ - восстановить узел html, чтобы сделать строку URL-адреса видимой.

I.e.

df <- data.frame(Val = c(1,2), url = c("<a href='https://www.google.com'>1</a>", "<a href='https://www.bbc.com'>2</a>")      
df$string_url <-paste("<a href ='", (str_match(df$url, "'(.*?)'")[,2]), "'>", (str_match(df$url, "'(.*?)'")[,2]), "</a>", sep = "" )    
datatable(df[c("Val","string_url")], escape = FALSE, filter = list(position = "top"))
person Nicolás Velásquez    schedule 09.08.2017
comment
Думаю, я плохо сформулировал свой вопрос. См. Комментарий, который я сделал выше. - person aleksip; 10.08.2017