首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中嵌套的For循环出现错误"numerical expression has 2 elements: only the first used“

R中嵌套的For循环出现错误"numerical expression has 2 elements: only the first used“
EN

Stack Overflow用户
提问于 2020-10-22 23:09:33
回答 1查看 87关注 0票数 0

我正在尝试使用R中的嵌套for循环打印字符串中3个连续字符的组合。代码确实打印了这些组合,但我得到了一个错误,即只对其中一个元素而不是数据帧中的每一行执行此操作。

代码语言:javascript
复制
x <- data.frame(Pattern = c("abcdef", "hijklmnop"), id = 1:2)

output <- vector("character", length(x$Pattern))

for (i in 1:nrow(x)) {  

  file <- x$Pattern[i]

  for (j in 1:(str_length(x$Pattern))) {
    output[j] <- substr(file, j, j+2)
  }

}

numerical expression has 2 elements: only the first usednumerical expression has 2 elements: only the first used
> 
> output
[1] "hij" "ijk" "jkl" "klm" "lmn" "mno"

这里发生了两件不起作用的事情。其一是启动的var output使用第一个模式的长度(length = 6)和基于该长度的打印组合,但是我寻找的输出是字符串的长度( length = 9)。不使用嵌套for循环的预期输出如下所示。

代码语言:javascript
复制
  for (j in 1:9) {
    
    output[j] <- substr(file, j, j+2)
    
  }

output
[1] "hij" "ijk" "jkl" "klm" "lmn" "mno" "nop" "op"  "p"  

我进一步削减了它,这样我就只有一个组合列表,每个字符串有3个连续的字符。

代码语言:javascript
复制
list(output[1:(length(output)-3)])
[[1]]
[1] "hij" "ijk" "jkl" "klm" "lmn" "mno"

我遇到的第二个问题是,输出只打印列表中第二个字符串的组合。我试着按照其他帖子中的建议将1:nrow(a)更改为seq_alonglength(a),但这不起作用。预期的输出如下所示。

代码语言:javascript
复制
a$combo <- output

a$combo
[1] c("abc","bcd","cde","def") c("hij","ijk","jkl","klm","lmn","mno")
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-23 23:05:49

代码语言:javascript
复制
x <- data.frame(Pattern = c("abcdef", "hijklmnop"), id = 1:2)

# number of additional letters in individual character string
add_letters = 2

library(stringr)

output = list()


for (i in 1:nrow(x)) {  
    
    file <- x$Pattern[i]
    
    l = list()
    
    for (j in 1:(str_length(x$Pattern[i])-add_letters)) {
        
        l[j] <- c(substr(file, j, j+add_letters))
    
    }
    
    output[[i]] = l 
    
}

x$combo = output

一个使用列表的解决方案--正如Gregor Thomas建议的那样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64485195

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档