2

我有一个知识结构,例如 ={{∅},{a},{b},{bc},{abd},{abcd},{abcde}}并希望它显示为一个矩阵。我怎么能在 R 中做到这一点?blim()包中的函数pks 需要一个矩阵,这需要我一个。


Falmagne, J.-C.、Koppen, M.、Villano, M.、Doignon, J.-P. 和 Johannesen, L. (1990)。知识空间简介:如何构建、测试和搜索它们。心理评论, 97 , 201224. doi: 10.1037/0033-295X.97.2.201

4

1 回答 1

2

这种矩阵的适当示例或

表示知识结构的逐个问题指示矩阵。如果问题包含在状态中,则元素为 1,否则为 0

可能是blim文档中的一个:

data(DoignonFalmagne7)
DoignonFalmagne7$K
      a b c d e
00000 0 0 0 0 0
10000 1 0 0 0 0
01000 0 1 0 0 0
11000 1 1 0 0 0
11100 1 1 1 0 0
11010 1 1 0 1 0
11110 1 1 1 1 0
11101 1 1 1 0 1
11111 1 1 1 1 1

假设知识结构作为一个字符向量提供并且空集对应于""一个可以进行如下:

kStruct <- c("", "a", "b", "bc", "abd", "abcd", "abcde")
ul <- strsplit(kStruct, "")
cn <- unique(unlist(ul))
K <- t(sapply(ul, function(x) cn %in% x) * 1)
dimnames(K) <- list(apply(K, 1, paste, collapse = ""), cn)
K
      a b c d e
00000 0 0 0 0 0
10000 1 0 0 0 0
01000 0 1 0 0 0
01100 0 1 1 0 0
11010 1 1 0 1 0
11110 1 1 1 1 0
11111 1 1 1 1 1

或者:

cn <- unique(unlist(strsplit(kStruct, "")))
K <- sapply(cn, grepl, kStruct) * 1
rownames(K) <- apply(K, 1, paste, collapse = "")

另请注意,正如我所见,列行的名称对于blim.

于 2013-07-20T13:30:40.740 回答