2015-02-07 49 views
1

我試圖將一段python代碼轉換爲R.在python中,使用字典中的字典。所以我想利用在R上的散包,無法在R中使用哈希包時強制類型'字符'類型的向量'

Python代碼:

titles = { 
'NAME' :{ 
    'exact':['NAME'] 
    ,'partial':[] 
    } 
, 'Dt' :{ 
    'exact':['Dt'] 
    ,'partial':[] 
    } 
, 'CC' :{ 
    'exact':[] 
    ,'partial':[] 
    } 
     } 

而且將R代碼,

library(hash) 
titles = hash(("NAME" = list("exact"=list('NAME'),"partial"=list())), 
      ("Dt" = list("exact"=list('Dt'),"partial"=list())), 
      ("CC" = list("exact"=list(),"partial"=list()))) 

但是當我嘗試使用此代碼與哈希環境,我得到這個錯誤。

Error in as.vector(x, "character") : 
    cannot coerce type 'closure' to vector of type 'character' 

當我嘗試用列表替換散列,其工作正常。但是,我使用鍵/值對(哈希包)主要是因爲我必須玩內部字典,我的意思是改變基於外部字典鍵的內部字典值。任何想法爲什麼我得到這個錯誤或任何替代方法。

正在更新下面,使問題更清楚。

爲了進一步解釋它,我將它創建爲鍵/值對(哈希包),主要是因爲我將在大量使用鍵/值對的字典上使用以下邏輯。我不確定這是否可以在沒有鍵/值對的R列表中輕鬆完成。

another_dict = {} 
multiples_dict = {} 
adj_title = 'Dt' 
for outer_key,outer_value in titles.iteritems(): 
     for exact in outer_value['exact']: 
      if exact == adj_title: 
       another_dict[actual_title] = outer_key 
       multiples_dict[outer_key] = multiples 
     for partial in inner_dict['partial']: 
      if partial in adj_title: 
       another_dict[actual_title] = outer_key 
       multiples_dict[outer_key] = multiples 

在此先感謝。

+0

你的問題不清楚。你想通過說「根據外部字典鍵改變內部字典值」來達到什麼目的?你能提供一個小例子嗎? – 2015-02-07 14:30:41

+0

感謝您的回覆。我已經更新了我將要用鍵/值對做什麼的問題。 – jeevag 2015-02-07 14:47:59

回答

2

你需要擺脫周圍的每個鍵/值對的括號的,如:

library(hash) 
titles = hash("NAME" = list("exact"=list('NAME'),"partial"=list()), 
      "Dt" = list("exact"=list('Dt'),"partial"=list()), 
      "CC" = list("exact"=list(),"partial"=list())) 

當包括括號hash( (a=b)),對象(a=b)被作爲一個表達式過去了,不是關鍵/值對

+0

哦,我的壞。我不知何故錯過了它。感謝那。 – jeevag 2015-02-07 21:18:57

相關問題