#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. Отлично, большое спасибо