HTML-теги в фрейме данных в соответствии с условиями

#r

Вопрос:

Я пытаюсь включить html-теги в фрейм данных в соответствии с условиями. Но попадание ниже ошибки. Может ли кто-нибудь помочь

 asd <- data.frame(a = c("a","b"))
if(asd$a == "a"){
  asd$new <- HTML('<span>',asd$a,'</span>','<span> R</span>')
} else {
  asd$new <- asd$a
}
Warning message:
In if (asd$a == "a") { :
  the condition has length > 1 and only the first element will be used 
 

Ожидаемый результат

 asd
a    new
  
a    <span>',a,'</span>','<span> R</span>
b    b
 

Ответ №1:

Вы можете попробовать —

 asd <- data.frame(a = c("a","b"))
asd$new <- asd$a
inds <- which(asd$a == "a")
asd$new[inds] <- htmltools::HTML('<span>',asd$a[inds],'</span>','<span> R</span>')
asd

#  a                              new
#1 a <span> a </span> <span> R</span>
#2 b                                b
 

Если в кадре данных имеется более одного значения, удовлетворяющего условию, которое вам, возможно, придется использовать sapply .

 asd <- data.frame(a = c("a","b", "a"))
asd$new <- asd$a
inds <- which(asd$a == "a")
asd$new[inds] <- sapply(asd$a[inds], function(x)
                htmltools::HTML('<span>',x,'</span>','<span> R</span>'))
asd
 

Комментарии:

1. Отлично, большое спасибо