#r #list
Вопрос:
Используя два списка ниже, я хотел бы экспортировать файл .csv, содержащий значения из l2
отдельных столбцов и l3
в отдельных столбцах. В этих уникальных именах l
есть буква (например, A, B, C) и есть число (например, 2001, 2002, 2003). Я бы разделил их так, чтобы буквы имели свой собственный столбец, а число имело отдельный столбец.
Ожидаемый Результат:
Письмо | Номер | Значения из l2 |
Значения из l3 |
---|---|---|---|
A | 2001 | 10 | 15 |
B | 2002 | 11 | 16 |
C | 2003 | 12 | 17 |
l lt;- list("A_2001","A_2001","B_2002","B_2002", "C_2003", "C_2003") l2 lt;- list("1"= 10, "2" = 11, "3" = 12) l3 lt;- list("1"= 15, "2" = 16, "3" = 17)
Ответ №1:
На основе входных данных мы можем unlist
list
элементы и создать data.frame с read.table
и transform
— получить unique
элементы «l», unlist
, читать с read.table
указанием _
как sep
для создания двух столбцов data.frame , затем unlist
» l2 » и » l3 » для добавления новых столбцов в набор данных
out lt;- transform(read.table(text = unlist(unique(l)), header = FALSE, col.names = c("Letter", "Number"), sep = "_"), Values_from_l2 = unlist(l2), Values_from_l3 = unlist(l3))
-выход
out Letter Number Values_from_l2 Values_from_l3 1 A 2001 10 15 2 B 2002 11 16 3 C 2003 12 17
Комментарии:
1. Хороший трюк с
read.table
.2. @r2evans почему вы удалили свой пост. Кажется, что с этим все по-другому,
strsplit
хотя3. Да, это грубый подход, который ничем не лучше этого.