我在要转换为布尔列的每一行中都有一个随机排序列表,使用内容作为 R 中的列名

I have a randomly order list in each row that I want to convert to a boolean column, using the contents as the column name in R

我的数据框的每一行都有一个随机排序的列表,我想将其转换为布尔列,使用列表元素的内容作为 R 中的列名。

列表中的示例数据:

[[9675]]
[1] "Jazz"       "Music"
[[9676]]
[1] "Modern"         "Opera"    "Music" 
[[9677]]
[1] "Rock"      "Music"     
[[9678]]
[1] "HMetal"       "Rock"     "Music"

我希望结果是这样的:

      Genre.Music Genre.Modern Genre.Jazz Genre.Classical Genre.Opera Genre.Rock Genre.HMetal 
[[9675]]   1           0             1          0               0           0          0
[[9676]]   1           1             0          0               1           0          0            
[[9677]]   1           0             0          0               0           1          0                                                         1                                                     
[[9678]]   1           0             0          0               0           1          1                                          

我希望能够在读取每条记录时即时创建每一列,因为我总共有大约 200 种类型。

在 R 中有什么方法可以将列表项的内容用作列的键?如果这有助于列创建过程,我当然可以提前对列表进行排序。

我将在统计分析中使用最终结果。

你可以这样做

lst <- list(
  A = letters[1:2],
  B = letters[2:4]
)
lst
# $A
# [1] "a" "b"
# 
# $B
# [1] "b" "c" "d"
library(reshape2)
(df <- recast(lst, L1~value))
#   L1    a b    c    d
# 1  A    a b <NA> <NA>
# 2  B <NA> b    c    d
cbind(df[1], (!is.na(df[-1])) +0L)
#   L1 a b c d
# 1  A 1 1 0 0
# 2  B 0 1 1 1