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