Я использую пакет R tm, пытаясь разделить свой корпус на набор для обучения и набор для тестирования и закодировать их в метаданные для выбора. Как проще всего это сделать (предположим, я пытаюсь разделить образец пополам)?
Вот некоторые вещи, которые я пробовал:
- Я знаю, что когда я печатаю...
> meta(d) MetaID Y 1 0 1 2 0 1
Я вижу идентификаторы, но не могу получить к ним доступ (чтобы сказать, что первая половина принадлежит одному набору, а вторая - другому набору). rownames(attributes(d)$DMetaData)
дает мне индексы, но это выглядит уродливо, и это факторы.
- Теперь, после преобразования в фрейм данных, скажем, d — это мой набор данных, я просто говорю:
half <- floor(dim(d)[1]/2) d$train <- d[1:half,] d$test <- d[(half+1):(half*2),]
Но как я могу легко сделать что-то вроде...
meta(d, tag="split") = ifelse((meta(d,"ID")<=floor(length(d)/2)),"train","test")
... чтобы получить результат, например:
> meta(d) MetaID Y split 1 0 1 train 2 0 1 train ... . . ... 100 0 1 test
К сожалению, meta(d,"ID")
не работает, а meta(d[[1]],"ID") == 1
работает, но является избыточным. Я ищу полновекторный способ доступа к мета-идентификатору или, как правило, более разумный способ подмножества и назначения метапеременной «разделить».