2017-10-09 98 views
0

我在Matlab的crsp中有一個表格,並且有一個用作鍵的數字單元格陣列。我想使用存儲爲變量的單元格數組從表中檢索信息。我的代碼如下:使用單元格陣列從表中檢索數據 - Matlab

function y = generateWeights(permno_vector, this_datenum, crsp) 

    crsp(crsp.PERMNO == permno_vector,:); 

crsp定義爲表,而permno_vector是單元格數組。它包含一些用於檢索信息的permnos。

在這種情況下,我的代碼無法正常工作,並且不允許我訪問crsp中的值。我們如何使用矢量數組訪問表值?

+0

你有問題要問? – excaza

+0

對不起,是的,我有。問題是它根本無法工作。如何使用這樣的數組訪問表中的多個值。 – alexp2603

+0

您期望從此輸出什麼?你最後的聲明:crsp(crsp.PERMNO == permno_vector,:);沒有做任何事情,即你沒有將輸出分配給任何東西或打印它。 –

回答

1

正如James Johnstone指出的那樣,您發佈的代碼的第一個問題是它不會將任何內容分配給y,因此編寫函數時不會返回值。一旦你解決了這個問題,我認爲你看到的錯誤是Undefined operator '==' for input arguments of type 'cell'.提問時包含這種細節總是有幫助的。

語法

crsp(crsp.PERMNO == x,:) 

都將返回一個有PERMNO等於xcrsp那些行。但是,如果你要提供可能值的列表,並取回你的表,其中的目標變量相匹配的值的一個列表中的所有行,你需要使用ismember

crsp(ismember(crsp.PERMNO, cell2mat(permno_vector)),:) 

如果permno_vector是一個單元陣列,或簡單地:

crsp(ismember(crsp.PERMNO, permno_vector),:) 

如果可以代替提供permno_vector作爲數值向量(在crsp.PERMNO假設當然數據也是數字)。

相關問題