Превратите grepl в функцию - PullRequest
0 голосов
/ 02 июня 2018

Идея довольно проста: определить уровни data.frame, извлечь все строки с определенным уровнем и записать их в новый data.frame.

Так что очень плохое решение должно выглядеть следующим образом.

table <- as.data.frame(table)
table$X4[duplicated(table$X4)]
id_list <-levels(factor(table$X4))
id_df <- as.data.frame(id_list)
row_number <- nrow(id_df)

table$a <- grepl(pattern = id_df[1,1], table$X4)
cow1 <- table[table$a == TRUE, ]
table$b <- grepl(pattern = id_df[2,1], table$X4)
cow2 <- table[table$b == TRUE, ]
table$c <- grepl(pattern = id_df[3,1], table$X4)
cow3 <- table[table$c == TRUE, ]
table$d <- grepl(pattern = id_df[4,1], table$X4)
cow4 <- table[table$d == TRUE, ]

Я знаю, что базовая функция должна выглядеть примерно так, чтобы сделать дело и избежать копирования $ вставки кода

for(i in 1:nrow) 
{
 table$[i] <- grepl(pattern = id_df[i,1], table$X4)
 print(table)
 }

1 Ответ

0 голосов
/ 11 августа 2018

Разве вы не можете просто использовать функцию split()?

mylist <- split(iris, iris$Species)

mylist - это список фреймов данных, элементы списка которых имеют имена, соответствующие именам уровня фактора.

Распечатайте один фрейм данных

mylist$setosa

Чтобы напечатать все новые фреймы данных:

lapply(mylist, print)

Если вы заранее знаете уровни факторов (а есть только 1столбец коэффициента):

mylist <- split(iris, c("setosa", "virginica")) # a list of two data frames

...