从 R 中的 LookUp-Table / CSV 文件创建向量

Create Vector from LookUp-Table / CSV-File in R

我有一个 CSV 文件,其中两列每个单元格包含一个或多个整数。

df <- data.frame(x=c("a","b","a","b"), 
y=c("datatype 1","datatype 1","datatype 2", "datatype 2"), 
z=c("2,3", "1,2","1,2,3,4,5", "3"))

names(df) <- c("hypothesis", "type", "mass") 

> df
  hypothesis       type      mass
1          a datatype 1       2,3
2          b datatype 1       1,2
3          a datatype 2 1,2,3,4,5
4          b datatype 2         3

我想从 .csv 中提取这些整数作为向量,并将它们分配给代码中的变量 x(数据类型 1,假设 a)和 y(数据类型 2,假设 a) .

现在,我正在使用 subset 通过 "datatype"(第 2 列)和 which("hypothesis"/第 1 列过滤 table ) 以获得我需要的相应 "mass" 值。在下一步中,我想使用 intersect 找出哪些元素由 xy 变量共享。

我的问题是,如何将“1,2,3”之类的 .csv 单元格内容放入 vector 中,intersect 函数适用于该内容?

当我调用单元格时,我得到 typeof integer,当应用 intersect 时,结果是 character(0)。当我手动分配 x <- c(1,2,3,4,5); y <- c(2,3) 结果是 - 应该是 - 2 3

我们可以 split 由 'type' 得到 'mass',使用 strsplitunlist 拆分字符串,转换为 numeric,获取 unique 元素并应用 intersect 以查找 list 元素中共有的元素

lst <- setNames(lapply(split(df$mass, df$type), function(x) 
       sort(unique(as.numeric(unlist(strsplit(as.character(x), ",")))))), c("x", "y"))

Reduce(intersect, lst)