我對Mathematica非常陌生,對於創建函數時產生的錯誤我感到非常沮喪。下面,我有一個函數,我正在寫一個矩陣,其中行對應於示例,列與要素。目標是從每個元素中減去它所屬列的平均值。Set :: write:創建函數時出錯
centerdata[datamat_] := (
numdatapoints =
Dimensions[datamat][[1]](*Get number of datapoints*)
numberfeatures =
Dimensions[datamat[[1]]][[1]](*Get number of datapoints*)
columnmean = ((Total[datamat])/numdatapoints)
For[i = 1, i < numdatapoints + 1, i++, (* For each row*)
For[j = 1, j < numfeatures + 1, j++, (* For each element*)
datum = datamat[[i]][[j]];
newval = (datum - (colmean[[j]]));
ReplacePart[datamat, {i, j} -> newval];
];
];
Return[datamat];
)
運行此功能對於一個矩陣,我得到以下錯誤:
「設置::寫:標籤時報4 {} 5.84333,3.054,3.75867,1.19867是保護>> 套裝::寫:「4 \ 150中的標籤時間受到保護」
其中{5.84333,3.054,3.75867,1.19867}是數據矩陣中的第一個示例,150是矩陣中的示例數(I' m使用着名的iris dataset,對於任何感興趣的人)。這些錯誤對應於此代碼:
numdatapoints = Dimensions[datamat][[1]](*Get number of datapoints*)
numberfeatures = Dimensions[datamat[[1]]][[1]](*Get number of datapoints*)
谷歌搜索和玩這個錯誤並沒有太大的幫助,因爲答覆通常涉及乘法,這顯然沒有在這裏完成。
也許你想在每個命令的末尾使用';'。 –