Je sais que ma question est un peu vague, alors j'ai un exemple de ce que j'essaie de faire.Dans R, comment est-ce que je place un texte autour de tous les mots d'une chaîne, mais d'un texte spécifique (de gauche à droite)? Itération et manipulation de cordes
input <- c('I go to school')
#Output
'"I " * phantom("go to school")'
'phantom("I ") * "go" * phantom("to school")'
'phantom("I go ") * "to" * phantom("school")'
'phantom("I go to ") * "school"'
J'ai écrit une fonction, mais je vais avoir beaucoup de mal à comprendre comment le rendre applicable aux chaînes avec un nombre différent de mots et je ne peux pas comprendre comment je peux inclure itération à réduire le code copié. Il génère cependant la sortie ci-dessus.
Actuellement, ma fonction ne fonctionne que sur des chaînes de 4 mots. Il comprend également aucune itération.
Mes questions principales sont: Comment puis-je inclure l'itération dans ma fonction? Comment puis-je le faire fonctionner pour n'importe quel nombre de mots?
add_phantom <- function(stuff){
strings <- c()
stuff <- str_split(stuff, ' ')
strings[1] <- str_c('"', stuff[[1]][[1]], ' "', ' * ',
'phantom("', str_c(stuff[[1]][[2]], stuff[[1]][[3]], stuff[[1]][[4]], sep = ' '), '")')
strings[2] <- str_c('phantom("', stuff[[1]][[1]], ' ")',
' * "', stuff[[1]][[2]], '" * ',
'phantom("', str_c(stuff[[1]][[3]], stuff[[1]][[4]], sep = ' '), '")')
strings[3] <- str_c('phantom("', str_c(stuff[[1]][[1]], stuff[[1]][[2]], sep = ' '), ' ")',
' * "', stuff[[1]][[3]], '" * ',
'phantom("', stuff[[1]][[4]], '")')
strings[4] <- str_c('phantom("', str_c(stuff[[1]][[1]], stuff[[1]][[2]], stuff[[1]][[3]], sep = ' '), ' ")',
' * "', stuff[[1]][[4]], '"')
return(strings)
}