我使用sm
包中的函數binning
獲取繪製的x,y座標,並將它們放入離散倉中。這將創建一個頻率表,其中bin的數量由SampleSize的用戶輸入確定。我的「頻率」表將錶轉換爲值列表
num_bins <- max(x_max,y_max)/SampleSize
bin_breaks <- matrix(c(bins,bins), num_bins+1,2)
frequency <- binning(combo_points,breaks=bin_breaks,nbins=num_bins)$table.freq
輸出格式爲...
x1 x2 x3 x4 x5...
y1 0 5
y2 0
y3 0
y4
y5
.
.
.
但我需要將其轉換爲一個列表格式x和y的所有值...
x y count
1 1 0
1 2 0
1 3 0
2 1 5
. . .
. . .
我想將此錶轉換爲x,y,count的data.frame列表,其中x和y現在實際上就是bin本身的x,y座標。我目前通過設置data.frame來列出bin座標(freq_points $ x和freq_points $ y),然後運行for循環來搜索表中與每行的值相匹配的數據我的freq_points data.frame創建一個新的vector(z)for循環的每個迭代都會附加到...但是有超過340萬個bin,這個過程需要幾個小時。
for (i in 1:length(frequency)){
z<-append(z,frequency[freq_points$y[i],freq_points$x[i]])}
有人可以推薦一個更優雅的解決方案嗎?有沒有更直接的方法將表格轉換爲列表?我在R中很新,也許我在這裏錯誤地使用了'table'和'list'這兩個術語。我希望上面給出的格式有助於澄清我的問題。從「dput(頻率)」
輸出應用答案下面我不具有X1,X2,Y1,Y2爲實際的行和列標題名稱的數據時,我遇到了一些麻煩。我正在用這些來試圖說明我的觀點,但似乎造成了更多的困惑。對此,我表示歉意。使用@neerajt提供的小矩陣......我不明白輸出結果,爲什麼count.1,count.2和count.3是給出的。這些「計數」列都不能用於x,y座標。你能否介紹一下這方面的情況?
freq <- matrix(c(0,0,1,5,0,1,1,0,1,1,1,0),nrow=4,ncol=3)
freq
[,1] [,2] [,3]
[1,] 0 0 1
[2,] 0 1 1
[3,] 1 1 1
[4,] 5 0 0
counts <- unlist(freq)
xname <- rep(c(1:ncol(freq)),nrow(freq))
yname <- rep(c(1:nrow(freq)),ncol(freq))
z <- data.frame(x=xname, y=yname, count=counts, row.names=NULL)
z
x y count.1 count.2 count.3
1 1 1 0 0 1
2 2 2 0 1 1
3 3 3 1 1 1
4 1 4 5 0 0
5 2 1 0 0 1
6 3 2 0 1 1
7 1 3 1 1 1
8 2 4 5 0 0
9 3 1 0 0 1
10 1 2 0 1 1
11 2 3 1 1 1
12 3 4 5 0 0
你可以'輸'頻率請 – Ananta
你試過'as.data.frame(頻率)'? – MichaelChirico
as.data.frame並未將表中數據的結構更改爲3列(x,y,z)數據框。 – braxtonlewis