我想/需要創建一個1和0的矩陣,其中包含有關常用術語的信息。我在列之間創建了一個常用術語矩陣(例如像1,4,2行),但我不知道如何分解它。如何計算常見概念並將結果存儲在矩陣中?
這裏是一個玩具和可重複的例子。步驟(1) - (4)可以,步驟(5)是我目前無法做到的。
(1)I有此(虛構的)數據集
vec1 <- c("apple","pear","apple and pear")
vec2 <- c("apple and pear","banana","orange")
vec3 <- c("orange and pear","banana","apple")
my.data.frame <- as.data.frame(cbind(vec1,vec2,vec3))
vec1 vec2 vec3
1 apple apple and pear orange and pear
2 pear banana banana
3 apple and pear orange apple
(2)I提取的變量和所述內容
vectors.list <- as.vector(colnames(my.data.frame))
list.of.fruits <- unique(as.vector(unlist(my.data.frame)))
(2)I寫下一個函數來計算的常用術語(這是這篇文章的變形:How to count common words and store the result in a matrix?)
common.fruits <- function(vList) {
v <- lapply(vList, tolower)
do.call(rbind, lapply(v, function(x) {
do.call(c, lapply(v, function(y) length(intersect(x, y))))
}))
}
(4)我使用get和lapply到一切都做得那麼青梅有效的(我猜)計算
compare <- lapply(vectors.list,get)
common.terms.matrix <- common.fruits(compare)
rownames(common.terms.matrix) <- vectors.list
colnames(common.terms.matrix) <- vectors.list
common.terms.matrix
vec1 vec2 vec3
vec1 3 1 1
vec2 1 3 1
vec3 1 1 3
(5)如何解聚,去年矩陣這個矩陣或data.frame(以下簡稱「|」都表明,這是手寫的)
| apple | pear | apple and pear | banana | orange | orange and pear
vec1 | 1 | 1 | 1 | 0 | 0 | 0
vec2 | 0 | 0 | 1 | 1 | 1 | 0
vec3 | 1 | 0 | 0 | 1 | 0 | 1
唔該非常感謝 – pachamaltese
我在中國通過改變後面會出現一個小時OSX語言圖標寫:) – pachamaltese