如何删除R中向量的所有无价值元素?

时间:2018-08-25 20:16:14

标签: r vector

我的R代码中有一个向量x,长度为4。我将第一个和第二个元素连接在一起,然后从向量中删除了第二个元素。如何从向量中完全删除元素,使其长度为4?希望有道理!!不确定我的解释是否很好,因此包含在下面的代码中。

inning <- "Valente T. flied out to lf (1-0 B). Galazin grounded out to 2B (1-2 FBS). Shaw singled through the left side (0-0). Boselli Iii flied out to cf (0-2 KF)."

inn <- unlist(strsplit(inning, "[.]"))

for (i in 1:length(inn)){
ab_length <- sapply(strsplit(inn[i], " "), length)
if(ab_length<3){
    inn[i] <- paste(inn[i], inn[i+1])
    inn <- inn[-(i+1)]
    inn <- remove.na(inn)
} # end if
} # end for

num <- rep(0, length(inn))

它适用于上面的示例,但假设我将Galazin更改为GalazinB。然后将向量保留5个元素,并且不将Galazin B.与句子的其余部分连接。有想法吗?

1 个答案:

答案 0 :(得分:0)

稍微修改您的代码:最好对单词进行计数,而不是用“”进行拆分,并对拆分项进行计数(因为句子开头将被计为其他项)。我宁愿使用while,因为inn的长度按循环变化:

 library(stringr)

 inning <- "Valente T. flied out to lf (1-0 B). Galazin B. grounded out to 2B (1-2 FBS). Shaw singled through the left side (0-0). Boselli Iii flied out to cf (0-2 KF)."
 inn <- unlist(strsplit(inning, "[.]"))

  i<-1
  while (i < length(inn)){
   ab_length <- str_count(inn[i], '\\w+')

   if(ab_length<3){
     inn[i] <- paste(inn[i], inn[i+1])
     inn <- inn[-(i+1)]
   }# end if
   i <-i+1
 } # end