Является ли правильная функция R для нахождения индекса строки элемента из вектора в data.frame? - PullRequest
0 голосов
/ 25 марта 2019

Напишите функцию в R, которая получает два параметра.Первый - data.fame или data.table, второй - вектор целых чисел.Функция функции - возвращать строки первого параметра, серийный номер которого был в векторе, в новой переменной data.table или data.frame.Если в векторе число больше, чем количество строк в таблице данных, напишите для этого числа сообщение, что строка не была включена в вывод.

Я пробовал, но это не вектори я не знаю, как я могу это сделать

get_vecrow = function(data, vecrow){
  if (vecrow <= nrow(data) & vecrow > 0){
    print(data[vecrow,])
  }
  else{
    print("Row: ")
    print(nrow(data))
  }
}

1 Ответ

0 голосов
/ 26 марта 2019
# Dummy data
vector = c(1,2,10,400) # Vector of numbers want to find in df
df = data.frame(data = seq(1,100,1), random = "yee") # dummy df 

# Loop to match vector numbers with data frame - on match save data frame row
grab_row = list() # Initialize output list
for (i in 1:nrow(df)){
  if(df$data[i] %in% vector) {  # Check that any number in the vector is in the data frame column
    grab_row[[i]] = df[i,] # if TRUE, grab the data frame row
  } 
} # end

# Output df with rows that matched vector 
out = do.call(rbind,grab_row)

Для вывода

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