R 稀疏矩阵向量列表
R list of vectors to sparse matrix
我有一个包含 columns/list 个向量的数据框 - 此列中的每个单元格包含不同长度的向量 |分隔号。
> dput(test)
structure(list(classes = c("30136|10263|10304|10207|10148|10319|10109|10306|10281|10187|10181|10046|10255|10018",
"10271|10306|10019|10073|10319|10112|10156|10069|10218|10011|10175|10039|10015|10304",
"10191|10286|10257", "10178|10325", "10156|10304|10294|10009",
"10124|10271|10306|10019|10319|10112|10156|10011|10039|10304|10272|10250|10109|10150|10163"
), fullurl = c("www.lonny.com/Gigi%20Hadid's%20Parents%20Are%20Selling%20Their%20Malibu%20Mansion?utm_campaign=Yaho-LN-US-Desktop-Specials-Gigi-Hadids-Parents-Are-Selli&utm_medium=cpc&utm_source=yaho",
"www.msn.com/?ocid=UE01DHP&pc=EUPP_UE01", "www.mybodygallery.com/photos-2576-body-shape.htm",
"news.abs-cbn.com/entertainment", "runt-of-the-web.com/savage-reddit-roasts",
"www.msn.com/en-us?cobrand=hp13.msn.com&ocid=HPCDHP&pc=HPDTDFJS"
)), .Names = c("classes", "fullurl"), row.names = c(17L, 40L,
49L, 50L, 52L, 60L), class = "data.frame")
我需要将其转换为稀疏矩阵或 "stretched" 数据框,
这样对于数据中每个可能的 class - 将出现一个包含 0/1 的专用列,具体取决于此 class 是否分配给此 url。
任何建议表示赞赏。
我想使用
do.call(rbind, strsplit(as.character(test$classes), "|", fixed=T))
但这并没有起到作用。
我们可以试试
library(qdapTools)
d1 <- mtabulate(setNames(strsplit(as.character(test$classes), "|",
fixed=T), test$fullurl))
classes <- unique(unlist(strsplit(test$classes, "|", fixed = TRUE)))
sapply(classes, grepl, test$classes) * 1
我有一个包含 columns/list 个向量的数据框 - 此列中的每个单元格包含不同长度的向量 |分隔号。
> dput(test)
structure(list(classes = c("30136|10263|10304|10207|10148|10319|10109|10306|10281|10187|10181|10046|10255|10018",
"10271|10306|10019|10073|10319|10112|10156|10069|10218|10011|10175|10039|10015|10304",
"10191|10286|10257", "10178|10325", "10156|10304|10294|10009",
"10124|10271|10306|10019|10319|10112|10156|10011|10039|10304|10272|10250|10109|10150|10163"
), fullurl = c("www.lonny.com/Gigi%20Hadid's%20Parents%20Are%20Selling%20Their%20Malibu%20Mansion?utm_campaign=Yaho-LN-US-Desktop-Specials-Gigi-Hadids-Parents-Are-Selli&utm_medium=cpc&utm_source=yaho",
"www.msn.com/?ocid=UE01DHP&pc=EUPP_UE01", "www.mybodygallery.com/photos-2576-body-shape.htm",
"news.abs-cbn.com/entertainment", "runt-of-the-web.com/savage-reddit-roasts",
"www.msn.com/en-us?cobrand=hp13.msn.com&ocid=HPCDHP&pc=HPDTDFJS"
)), .Names = c("classes", "fullurl"), row.names = c(17L, 40L,
49L, 50L, 52L, 60L), class = "data.frame")
我需要将其转换为稀疏矩阵或 "stretched" 数据框, 这样对于数据中每个可能的 class - 将出现一个包含 0/1 的专用列,具体取决于此 class 是否分配给此 url。 任何建议表示赞赏。 我想使用
do.call(rbind, strsplit(as.character(test$classes), "|", fixed=T))
但这并没有起到作用。
我们可以试试
library(qdapTools)
d1 <- mtabulate(setNames(strsplit(as.character(test$classes), "|",
fixed=T), test$fullurl))
classes <- unique(unlist(strsplit(test$classes, "|", fixed = TRUE)))
sapply(classes, grepl, test$classes) * 1