我正在创建1和0的矩阵。如果单词是字符串的一部分,则为1,否则为0。
例如,预期矩阵如下:
white hanging heart holder black suitcase
white hanging heart holder 1 1 1 1 0 0
black suitcase 0 0 0 0 1 1
我可以使用的是两个向量:
Itemsvector = c("white hanging heart holder","black suitcase", ...)
Wordsvector = c("white","hanging","heart","holder","black", "suitcase",...)
我正在玩弄%in%运算符的使用
strsplit(Itemsvector[1], split = ' ')[[1]] %in% Wordsvector
也
grepl(Wordsvector[1], Itemsvector)
尽管我迷失了将这组值映射到整个矩阵网格的方法,但确实提供了TRUE和FALSE值。
答案 0 :(得分:2)
在将“ Itemsvector”分割为table
个list
,vector
到data.frame并使用{ stack
table
或与table(stack(setNames(strsplit(Itemsvector, " "), Itemsvector))[2:1])
# values
#ind black hanging heart holder suitcase white
# white hanging heart holder 0 1 1 1 0 1
# black suitcase 1 0 0 0 1 0
mtabulate
答案 1 :(得分:1)
您可以尝试使用双sapply
,因为您已经有Wordsvector
来搜索,所以无需再次分割Itemsvector
。我们可以使用Itemsvector
查找是否存在特定的单词,特别是grepl
,并且为了格外注意,我们添加了单词边界,以使其与"white"
与“ {{1}”不匹配}。
whites"
数据
+(t(sapply(Itemsvector, function(x) sapply(Wordsvector, function(y)
grepl(paste0("\\b",y, "\\b"), x)))))
# white hanging heart holder black suitcase
#white hanging heart holder 1 1 1 1 0 0
#black suitcase 0 0 0 0 1 1