我是R編程的新手。如何刪除矩陣中未使用的行和列
我有兩個列表,一個列表包含用戶名。 另一個列表包含了每個用戶訪問的網頁
用戶:AAA BBB CCC DDD
記錄:
page 1 AAA
page 2 BBB
page 3 AAA
page 4 BBB
page 1 BBB
page 4 AAA
我需要收集每個用戶訪問的所有頁面
所需的輸出:
Pages visited by AAA page1,page 3, page 4
Pages visited by BBB page 2, page4, page 1
我正在嘗試存儲每個用戶瀏覽的網頁在矩陣
例如,在基體中含有等等
請看我下面的代碼,用戶1瀏覽過的網頁的1行的列:
k <- 0
out <- matrix(NA, nrow=100, ncol=50) #my final output matrix
for (i in users)
{
k <- k+1
p <- 0
for (j in records)
{
x<-(strsplit(j, "\t"))
if(x[[1]][2]== i) #gather all pages visited by a same user
{
p <- p+1
out[k,p]=c(x[[1]][1])
}
}
x <- 0
#here i need to remove unused columns in row k
}
out <- out[1:(k),] #remove unused rows in a matrix
print (out)
輸出I獲得所需
page1 page3 page4 NA NA NA .... NA
page2 page4 page1 NA NA NA .... NA
最終母:
page1 page3 page4
page2 page4 page1
你可以給你的兩個列表[可重現的例子](https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)嗎?如果將兩個列表綁定到一個數據框中,那麼一個簡單的聚合('aggregate(pages〜user,df,toString)')應該執行 – Sotos
這個工作嗎?所有用戶都訪問相同數量的頁面嗎?如果不是,矩陣將不起作用,因爲每個用戶需要不同數量的列。 – herbaman
@herbaman每個用戶查看的頁面數量不同。現在我明白我的錯誤,即一個矩陣不能使用,因爲它應該是一些固定的行x cols。你能建議任何替代方法來實現我的預期解決方案嗎? – AJOY