我有一个数据框,例如:
Groups Letters
G1 A
G1 A
G1 A
G1 A
G2 B
G2 B
G3 C
G3 C
G3 C
G4 A
G4 A
G5 C
我想解析数据帧并创建一个我可以查询的列表。
所以实际上我想打印此列表中每个名称的组,例如:
列出$A 给出:
['G1','G4']
有人有想法吗,
最佳答案
我们可以在unique
数据集上按“字母”拆分
“组”(假设只有两列,或者对所选列进行子集化),然后循环遍历 >list
并使用 as.list
lapply(with(unique(df1), split(Groups, Letters)), as.list)
-输出
$A
$A[[1]]
[1] "G1"
$A[[2]]
[1] "G4"
$B
$B[[1]]
[1] "G2"
$C
$C[[1]]
[1] "G3"
$C[[2]]
[1] "G5"
如果OP想要创建一个字符串,
lapply(with(unique(df1), split(Groups, Letters)),
function(x) sprintf("[%s]", toString(sQuote(x, FALSE))))
-输出
$A
[1] "['G1', 'G4']"
$B
[1] "['G2']"
$C
[1] "['G3', 'G5']"
或者我们可以转换为 JSON
library(jsonlite)
lapply(with(unique(df1), split(Groups, Letters)), function(x) toJSON(x))
$A
["G1","G4"]
$B
["G2"]
$C
["G3","G5"]
数据
df1 <- structure(list(Groups = c("G1", "G1", "G1", "G1", "G2", "G2",
"G3", "G3", "G3", "G4", "G4", "G5"), Letters = c("A", "A", "A",
"A", "B", "B", "C", "C", "C", "A", "A", "C")),
class = "data.frame", row.names = c(NA,
-12L))
关于r - R 中的列表(或字典)列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67827128/