2017-04-22 50 views
-2

假設我有兩個向量如下:R:鍵和值的矢量的矢量列出

keys <- c("key1", "key2", "key3") 
values <- c(1,2,3) 

,我想產生這樣的列表:

list("key1" = 1, "key2" = 2, "key3" = 3) 

什麼是好辦法在R中做到這一點?

回答

2

我們可以在一個單一的線與基礎R

as.list(setNames(values, keys)) 

#$key1 
#[1] 1 

#$key2 
#[1] 2 

#$key3 
#[1] 3 
+0

我已經找到了這個:http://stackoverflow.com/questions/17504241/how-to-create-a-list-in-r-from-two-vectors-one-would-be-the-keys-the - 其他-的 – RobinL

2

你可以做到以下幾點:

keys <- c("key1", "key2", "key3") 
values <- c(1,2,3) 

my_list <- as.list(values) %>% setNames(keys) 
+1

'→<執行操作 - as.list(值);名稱(L)< - 鍵「與基數R.運算符'%>%'不在基數R. – jogo

+0

@RonakShah考慮它,這也許是最直觀的解決方案 - 你想添加它作爲答案,我會接受嗎? – RobinL

2

您可以使用split太:

x <- split(values, keys) 

的副作用是,所產生的名單將通過按鍵進行排序。

+0

謝謝,我覺得必須有一個更簡單/內置的方法。我以前使用過split,但是在這種情況下我沒有使用它,儘管它幾乎是'split'最簡單的用例! – RobinL

+0

我不得不提到split會改變鍵值對的順序。這只是簡單的。就個人而言,我更喜歡'as.list' - >'names <-'方法。 – mt1022