gpt4 book ai didi

r - 在 R 中,如何将文本环绕字符串中的所有单词,但特定单词(从左到右)?迭代和字符串操作

转载 作者:行者123 更新时间:2023-12-02 04:33:01 27 4
gpt4 key购买 nike

我知道我的问题有点含糊,所以我有一个我正在尝试做的事情的例子。

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"'

我已经编写了一个函数,但我在弄清楚如何使其适用于具有不同字数的字符串时遇到了很多麻烦,而且我无法弄清楚如何包含迭代以减少复制的代码。不过,它确实会生成上面的输出。

现在我的函数只适用于包含 4 个单词的字符串。它还不包括迭代。

我的主要问题是:如何将迭代包含到我的函数中?我怎样才能让它适用于任意数量的单词?

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)
}

最佳答案

这是一些屠夫的工作,但它给出了预期的输出:):

input <- c('I go to school')
library(purrr)
inp <- c(list(NULL),strsplit(input," ")[[1]])
phantomize <- function(x,leftside = T){
if(length(x)==1) return("")
if(leftside)
ph <- paste0('phantom("',paste(x[-1],collapse=" "),' ") * ') else
ph <- paste0(' * phantom("',paste(x[-1],collapse=" "),'")')
ph
}
map(1:(length(inp)-1),
~paste0(phantomize(inp[1:.x]),
inp[[.x+1]],
phantomize(inp[(.x+1):length(inp)],F)))

# [[1]]
# [1] "I * phantom(\"go to school\")"
#
# [[2]]
# [1] "phantom(\"I \") * go * phantom(\"to school\")"
#
# [[3]]
# [1] "phantom(\"I go \") * to * phantom(\"school\")"
#
# [[4]]
# [1] "phantom(\"I go to \") * school"

关于r - 在 R 中,如何将文本环绕字符串中的所有单词,但特定单词(从左到右)?迭代和字符串操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46725254/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com