Как мне написать функцию, которая находит и печатает сообщение для каждого повторного индекса в векторе в R? - PullRequest
0 голосов
/ 24 февраля 2020

Я новичок в циклах и функциях, и я не хочу использовать функцию duplicated (). Если я бегу по всему диапазону вектора (я в 1: длина), он считает последний как повтор, потому что он сам читает. Но когда я пытаюсь указать диапазон для l oop как один индекс перед последним в следующем примере, я получаю это:

a=c(2,21,4,2,33,21,8,3,7,2)

my_function=function(a){
  l=length(a)
  for (i in 1:(l-1))
 if(a[i] %in% a[(i+1):l]) { 
    print(paste("The number in index", i, "is",a[i],"and it occurs again in the vector"))
}}

my_function(a)

Эта функция не считает последний индекс, который повторяется:

[1] "The number in index 1 is 2 and it occurs again in the vector"
[1] "The number in index 2 is 21 and it occurs again in the vector"
[1] "The number in index 4 is 2 and it occurs again in the vector"

Другая возможность:

a=c(2,21,4,2,33,21,8,3,7,2)

my_function=function(a){
  l=length(a)
  for (i in 1:l)
 if(a[i] %in% a[(i+1):(l-1)]) { 
    print(paste("The number in index", i, "is",a[i],"and it occurs again in the vector"))
}}

my_function(a)

И эта функция сообщает о повторении в индексе перед последним:

[1] "The number in index 1 is 2 and it occurs again in the vector"
[1] "The number in index 2 is 21 and it occurs again in the vector"
[1] "The number in index 9 is 7 and it occurs again in the vector"
[1] "The number in index 10 is 2 and it occurs again in the vector"

Итак .... Я не могу сказать, нужна ли мне вложенность для l oop или что еще мне не хватает. Любые идеи будут очень признательны!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...