从 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
找出哪些元素由 x
和 y
变量共享。
我的问题是,如何将“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',使用 strsplit
、unlist
拆分字符串,转换为 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)
我有一个 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
找出哪些元素由 x
和 y
变量共享。
我的问题是,如何将“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',使用 strsplit
、unlist
拆分字符串,转换为 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)