Как применить anti_join к списку data.frames, используя мастер data.frame - PullRequest
0 голосов
/ 29 октября 2018

У меня есть список data.frames, которые были случайным образом разделены по классам для получения 70% исходного набора данных. Я хотел бы присоединиться к списку data.frames, чтобы получить отдельный список data.frames, состоящий из оставшихся 30% данных.

require(splitstackshape)

n <- 10
heads <- "bc_title4"

train_split <- function(x) {
  listofdfs <- list()
  for(i in 1:n){
    df <- stratified(x, 1, 0.7)
    listofdfs[[i]] <- df
  }
  return(listofdfs)
}

train_list <- train_split(survey_points) #returns data.frame list to environment

test_split <- function(x) {
  listofdfs2 <- list()
  for(i in train_list){
    df <- x[!x$id %in% data.frame(train_list[i])$id,]
    listofdfs2[[i]] <- df
  }
  return(listofdfs2)
}

test_list <- test_split(survey_points)

Однако я не знаю, как написать функцию для противодействия, так как я получаю следующую ошибку:

Error in train_list[i] : invalid subscript type 'list' 
6.
data.frame(train_list[i]) 
5.
x$id %in% data.frame(train_list[i])$id 
4.
x$id %in% data.frame(train_list[i])$id 
3.
`[.data.frame`(x, !x$id %in% data.frame(train_list[i])$id, ) 
2.
x[!x$id %in% data.frame(train_list[i])$id, ] 
1.
test_split(survey_points) 

Та же ошибка при попытке использовать функцию anti_join:

test_split <- function(x) {
  listofdfs2 <- list()
  for(i in train_list){
    anti_join(x, data.frame(train_list[i]), by = "id")
    listofdfs2[[i]]
  }
  return(listofdfs2)
}


test <- test_split(survey_points)
 Error in train_list[i] : invalid subscript type 'list' 
9.
data.frame(train_list[i]) 
8.
tbl_vars(y) 
7.
check_valid_names(tbl_vars(y), warn_only = TRUE) 
6.
anti_join.tbl_df(tbl_df(x), y, by = by, copy = copy, ...) 
5.
anti_join(tbl_df(x), y, by = by, copy = copy, ...) 
4.
as.data.frame(anti_join(tbl_df(x), y, by = by, copy = copy, ...)) 
3.
anti_join.data.frame(x, data.frame(train_list[i]), by = "id") 
2.
anti_join(x, data.frame(train_list[i]), by = "id") 
1.
test_split(survey_points) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...