我是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