Как я могу динамически разделить любую таблицу / df в зависимости от количества элементов и сохранить каждый элемент в виде списка? - PullRequest
0 голосов
/ 03 июля 2018

enter image description here Я пытаюсь разбить таблицу на основе разницы значений одного столбца следующим образом:

Создание новой таблицы, содержащей информацию, упорядоченную по номерам хромосом в виде списков

t2_s=split(tbl2, tbl2$chr)

это создает список списков. Каждый список содержит до 10000 строк. Теперь я хочу извлечь каждый список и назначить ему имя динамически, я хочу иметь возможность делать это динамически, чтобы моя программа могла обрабатывать любую таблицу любого размера и любое количество списков после разделения на основе столбца.

Я попробовал следующее, но мне кажется, что я пытаюсь применить логику Java к R :

counter = 1
for (j in t2_s){
   paste(c("chrList", counter), collapse = " ") <- (t2_s[[counter]])
   counter = counter + 1
}

Мне нужно что-то, что не задушит производительность R , так как размер каждого сгенерированного списка также будет огромным. Я программист-любитель, поэтому любая помощь будет высоко ценится.

1 Ответ

0 голосов
/ 04 июля 2018

Вы можете использовать функцию assign() для этой задачи.

for (j in 1:length(t2_s)) {
    tmp <- paste("chrList", j, sep = "_")
    assign(tmp, t2_s[[j]])
}

Это создаст объект для каждого наблюдения в вашем списке. Если вы хотите затем создать список всех объектов, которые вы только что создали, вы можете сделать это с этим.

# this will get a character vector of all objects in your global environment
all_env_objects <- ls()

# this will extract the newly created objects from the above code
all_new_objects <- all_env_objects[grep("chrList_", all_env_objects)]

# this will create a list containing all the objects your created
your_list <- do.call("list", mget(all_new_objects))
...