R:基于列名和模式提取列表列

R:基于列名和模式提取列表列,r,list,indexing,extract,R,List,Indexing,Extract,我有一个列表(这里仅提供示例数据) 试一试 您在此处使用fixed=TRUE的任何原因?没有具体原因。只是在寻找一个固定的字符串时习惯了它,比如在本例中是“数据”。性能!;-)谢谢,这很有帮助。是否有一种方法可以进行多项选择,例如,选择包含“样本”的所有列以及在其各自的列名中包含“数据”的所有列?一种方法是使用正则表达式或(管道):grep(“data | sample”,names(df))当我使用此代码并运行它时,会显示“Undefined dimensions”错误。请帮帮我 my_lis

我有一个列表(这里仅提供示例数据)

试一试


您在此处使用
fixed=TRUE
的任何原因?没有具体原因。只是在寻找一个固定的字符串时习惯了它,比如在本例中是“数据”。性能!;-)谢谢,这很有帮助。是否有一种方法可以进行多项选择,例如,选择包含“样本”的所有列以及在其各自的列名中包含“数据”的所有列?一种方法是使用正则表达式或(管道):
grep(“data | sample”,names(df))
当我使用此代码并运行它时,会显示“Undefined dimensions”错误。请帮帮我
my_list <- list(structure(list(sample = c(2L, 6L), data1 = c(56L, 78L), 
    data2 = c(59L, 27L), data3 = c(90L, 28L), data1namet = structure(c(1L, 
    1L), .Label = "Sam1", class = "factor"), data2namab = structure(c(1L, 
    1L), .Label = "Test2", class = "factor"), dataame = structure(c(1L, 
    1L), .Label = "Ex3", class = "factor"), ma = c("Jay", "Jay"
    )), .Names = c("sample", "data1", "data2", "data3", "data1namet", 
"data2namab", "dataame", "ma"), row.names = c(NA, -2L), class = "data.frame"), 
    structure(list(sample = c(12L, 13L, 17L), data1 = c(56L, 
    78L, 3L), data2 = c(59L, 27L, 2L), datest = structure(c(1L, 
    1L, 1L), .Label = "Exa9", class = "factor"), dattestr = structure(c(1L, 
    1L, 1L), .Label = "cz1", class = "factor"), add = c(2, 2, 
    2)), .Names = c("sample", "data1", "data2", "datest", "dattestr", 
    "add"), row.names = c(NA, -3L), class = "data.frame"))

my_list
[[1]]
  sample data1 data2 data3 data1namet data2namab dataame  ma
1      2    56    59    90       Sam1      Test2     Ex3 Jay
2      6    78    27    28       Sam1      Test2     Ex3 Jay

[[2]]
  sample data1 data2 datest dattestr add
1     12    56    59   Exa9      cz1   2
2     13    78    27   Exa9      cz1   2
3     17     3     2   Exa9      cz1   2
out <- lapply(my_list, `[`, 1) # extract "sample" column
lapply(my_list, function(df) df[, grep("data", names(df), fixed = TRUE)] )
# [[1]]
# data1 data2 data3 data1namet data2namab dataame
# 1    56    59    90       Sam1      Test2     Ex3
# 2    78    27    28       Sam1      Test2     Ex3
# 
# [[2]]
# data1 data2
# 1    56    59
# 2    78    27
# 3     3     2

lapply(my_list, "[", "sample")
# [[1]]
# sample
# 1      2
# 2      6
# 
# [[2]]
# sample
# 1     12
# 2     13
# 3     17