我有一個數據幀,我從.csv文件讀取,看起來像這樣:數據幀嵌套列表
job name `phone number`
<chr> <chr> <int>
1 developer john 654
2 developer mike 321
3 developer albert 987
4 manager dana 741
5 manager guy 852
6 manager anna 936
7 developer dan 951
8 developer shean 841
9 administrative rebeca 357
10 administrative krissy 984
11 administrative hilma 651
12 administrative otis 325
13 administrative piper 654
14 manager mendy 984
15 manager corliss 321
DT = structure(list(job = c("developer", "developer", "developer",
"manager", "manager", "manager", "developer", "developer", "administrative",
"administrative", "administrative", "administrative", "administrative",
"manager", "manager"), name = c("john", "mike", "albert", "dana",
"guy", "anna", "dan", "shean", "rebeca", "krissy", "hilma", "otis",
"piper", "mendy", "corliss"), phone = c(654L, 321L, 987L, 741L,
852L, 936L, 951L, 841L, 357L, 984L, 651L, 325L, 654L, 984L, 321L
)), .Names = c("job", "name", "phone"), row.names = c(NA, -15L
), class = "data.frame")
我想把它改造成列表,列表,其中,例如:
myList$developer
會給我一個包含所有開發者的列表,然後
myList$developer$john
會給我相關電話號碼的列表名爲John的開發人員。有沒有簡單的方法來做到這一點?
如果你很好奇,爲什麼我願意做這樣的事情:我的工作中的實際數據幀是巨大的,所以找到由4個參數中的特定條目(在這個例子中,我可以找到一個具有2個參數的特定條目:作業,名稱)使用過濾器需要太多時間。我認爲嵌套列表的哈希表結構可能需要花費很多時間來構建,但是可以在O(1)中進行搜索,這對我來說確實很有用。 如果我錯了,你必須做的更好的方式我很樂意聽到它。
'lapply(分割(DF,DF $工作),功能(X)分裂(X $ PHONE_NUMBER,X $名))'會做到這一點。 –
@AndrewGustar和我的答案一樣;-) – Jaap