【发布时间】:2018-01-01 05:36:47
【问题描述】:
以这些示例字符串为例,我想将它们拆分为长度限制为 X 或更少的字符,一个完整的单词位于每个字符串的末尾,其余部分存储在另一列中。单词总是用空格隔开。我遇到了this partial solution in TSQL(不会为多余的单词创建变量)。但是我需要在 R 中执行此操作。在上一个问题中为我提供了前半部分解决方案,这在新变量中没有剩余的单词。我需要帮助来创建新变量
{gsub(patt="(^.{2,100})([ ].+)", repl="\\1",y)}
例如:
XOVEW VJIEW NI **stays** XOVEW VJIEW NI (assuming X is 14)
XOVEW VJIEW NIGOI **becomes** XOVEW VJIEW (NIGOI goes to a new vector)
XOVEW VJIEWNIGOI **becomes** XOVEW (assuming X is 14)
所以新变量将包含来自上面第 2 行和第 3 行的 c("NIGOI","VJIEWNIGOI")。
【问题讨论】:
-
v1 <- ifelse( nchar(vect) > 14, gsub( "(.*)\\s+(\\w+)", "\\1 - \\2", vect),vect);values <- data.frame(do.call('rbind', lapply(strsplit(v1,split="-"), `length<-`,2)));,如果这能解决您的问题,请告诉我,其中 vect 是您的输入行,值是最终输出 -
你明白了。我整天都在做这个!谢谢。你能解释一下这里使用的 do.call 语句吗?