首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

R子集data.frame by column name使用另一个列表中的部分字符串匹配

在R中,可以使用subset()函数来根据列名进行子集操作。要使用另一个列表中的部分字符串进行匹配,可以结合使用grepl()函数和逻辑运算符。

下面是一个完善且全面的答案:

在R中,要根据列名进行子集操作,可以使用subset()函数。该函数的第一个参数是要进行子集操作的数据框,第二个参数是逻辑条件,用于筛选满足条件的行。

要使用另一个列表中的部分字符串进行匹配,可以使用grepl()函数。grepl()函数接受两个参数,第一个参数是要匹配的模式,第二个参数是要匹配的字符串。它返回一个逻辑向量,指示每个字符串是否与模式匹配。

下面是一个示例,演示如何使用subset()函数和grepl()函数来根据列名进行子集操作:

代码语言:txt
复制
# 创建一个示例数据框
df <- data.frame(
  name = c("John", "Jane", "Alice"),
  age = c(25, 30, 35),
  city = c("New York", "London", "Paris")
)

# 创建一个包含部分列名的列表
columns <- c("name", "city")

# 使用subset()函数和grepl()函数进行子集操作
subset_df <- subset(df, grepl(paste(columns, collapse = "|"), names(df)))

# 输出结果
print(subset_df)

在上面的示例中,我们首先创建了一个包含三列的数据框df,然后创建了一个包含部分列名的列表columns。接下来,我们使用grepl()函数和paste()函数将columns列表中的列名合并为一个正则表达式模式,用于匹配数据框的列名。最后,我们使用subset()函数根据列名进行子集操作,并将结果存储在subset_df中。最后,我们打印输出了子集数据框subset_df

这种方法可以方便地根据另一个列表中的部分字符串进行列名的匹配和子集操作。对于更复杂的匹配需求,可以使用正则表达式的其他功能来实现。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Pandas 2.2 中文官方教程和指南(三)

这些方法通常与单个元素的内置字符串方法具有匹配的名称,但是在每个值的列上逐个应用(记得逐元素计算吗?)。 创建一个新列Surname,其中包含乘客的姓氏,通过提取逗号前的部分。...字符串方法Series.str.contains()检查列Name中的每个值是否包含单词Countess,并对每个值返回True(Countess是名称的一部分)或False(Countess不是名称的一部分...到用户指南 更多有关提取字符串部分的信息,请参阅用户指南中有关字符串匹配和提取的部分。 泰坦尼克号的乘客中,哪位乘客的名字最长?...R Python 数组 列表 列表 字典或对象列表 data.frame 数据框 ddply 在 R 中使用名为 df 的 data.frame 来按 month 汇总 x 的表达式: require...在 R 中,您可能希望获取 data.frame 的行,其中一个列的值小于另一个列的值: df data.frame(a=rnorm(10), b=rnorm(10)) subset(df,

21300
  • R语言数据分析利器data.table包 —— 数据框结构处理精讲

    将一个R对象转化为data.table,R可以时矢量,列表,data.frame等,keep.rownames决定是否保留行名或者列表名,默认FALSE,如果TRUE,将行名存在"rn"行中,keep.rownames...DT的属性,setattr(x,name,value) x时data.table,list或者data.frame,而name时属性名,value时属性值,setnames(x,old,new),设置x...with 默认是TRUE,列名能够当作变量使用,即x相当于DT$"x",当是FALSE时,列名仅仅作为字符串,可以用传统data.frame方法并且返回data.table,x[, cols, with...roll 当i中全部行匹配只有某一行不匹配时,填充该行空白,+Inf(或者TRUE)用上一行的值填充,-Inf用下一行的值填充,输入某数字时,表示能够填充的距离,near用最近的行填充 rollends... 填充首尾不匹配的行,TRUE填充,FALSE不填充,与roll一同使用 which TRUE返回匹配的行号,NA返回不匹配的行号,默认FALSE返回匹配的行 .SDcols 取特定的列,然后.

    5.9K20

    「r」dplyr 里的 join 与 base 里的 merge 存在差异

    构造数据集 下面是一个可重复的例子,构造两个数据集,一个是基于 data.frame 的列表,另一个是就要 data.table 的列表: x <- list( a = data.frame(r1...")= 从存储的信息来看,这两个列表是没有任何差异的。...本质上是 data.table 体格的泛型函数不支持类似基础包中的操作。 如何编写代码支持对上述数据集的连接操作?...如果 be_join 不为空,进行如下的循环: 如果存在,则将这个子集和 to_join 按共同列合并 如果不存在,使用循环位移一位,将当前 be_join 的第 2 个子集移动为 第 1 个。...2 S1 S2 S2 S1 S2 更新 在后面的一些使用过程中发现基础包的 merge() 函数在进行连接操作时会输出有问题的结果,所以建议使用的小伙伴仔细检查结果。

    1.6K30

    生信学习-Day6-学习R包

    在这个特定的例子中,向量 vars 包含了两个元素,它们都是字符串:"Petal.Length" 和 "Petal.Width"。这两个字符串通常对应于数据框中的列名。...这样做的目的通常是为了在后续的函数调用中简化代码,特别是在你想要操作数据框中特定的列时。 这会从 your_data_frame 数据框中选择列名与 vars 向量中的字符串相匹配的列。...在dplyr包的filter()函数中使用时,它可以用于筛选数据框中匹配给定集合中任一值的行。这行代码的作用如下: filter(test, ...): 在test数据框中筛选行。...z = c("A","B","C",'D'): 类似地,这部分代码创建了另一个名为z的列,包含四个字符值:'A'、'B'、'C'和'D'。...结果将是一个新的数据框,其中包含了test1中那些在test2中找到匹配项的行,而不包含在test2中找不到匹配项的行。这种操作通常用于数据集的筛选,以保留与另一个数据集相关的数据。

    21710

    「R」数据操作(三):高效的data.table

    接「R」数据操作(一)和「R」数据操作(二) 使用data.table包操作数据 data.table包提供了一个加强版的data.frame,它运行效率极高,而且能够处理适合内存的大数据集,它使用[]...data.table和data.frame,也就是说data.table继承了data.frame的一些行为,但增强了其他部分。...对数据进行分组汇总 by是data.table中另一个重要参数(即方括号内的第3个参数),它可以将数据按照by值进行分组,并对分组计算第2个参数。...我们不仅可以直接使用列,也可以提前定义注入.N、.I和.SD来指代数据中的重要部分。...(year = year(date))] } 这里我们使用.SD[[x]]提取x列的值,这跟通过名字从列表中提取成分或元素相同。

    6.4K20

    R语言 常见函数知识点梳理与解析 | 精选分析

    ) 5、complete.cases( ) 判断对象中是否数据完全 6、grep()找出所数据框中元素所在的列值(仅数据框中) 7、assign()通过变量名的字符串来赋值 8、 split()根据因子变量拆分数据框...) 13、ls( )用来列出现存的所有对象 常见函数列表 14、数据管理相关 15、字符串处理函数 16、因子 17、数学计算 18、数组相关 19、逻辑运算 20、控制结构相关 21、自定义函数相关...22、输入输出 23、工作环境 24、简单统计量 25、时间序列 【往期回顾】 R语言 | 第一部分:数据预处理 R语言|第2讲:生成数据 R语言常用的数据输入与输出方法 | 第三讲 R语言数据管理与...:取子串 format,format C:把对象用格式转换为字符串 paste,strsplit:连接或拆分 charmatch,pmatch:字符串匹配 grep,sub,gsub:模式匹配与替换...window:时间窗 说明:本文中前半部分内容为作者自行整理,后半部分内容引自网络,稍作整理(蓝色标记部分是笔者认为比较常见和使用的函数)。

    2.3K21

    生信技能树 数据框data.frame练习1

    是R语言用于生信分析时最常用且最重要的两种数据类型,编程语言还是需要多练,熟能生巧,没别的捷径,学了不用也就忘了。...题目链接:https://www.r-exercises.com/2016/01/04/data-frame-exercises/ 答案链接:https://www.r-exercises.com/2016...自己答案 dfstate=data.frame(state.abb,state.area,state.division,state.region,row.names = state.name) #不会取字符串子集...(df) <- substr(names(df), 7, 9) 分析 substr函数取字符串子集,学习一下 Exercise 10 Add the previous data frame column-wise...0,1,2,3四个数将0-3分成了三个区间,include.lowest代表左边的值取不取,right表示右边的值取不取,意思就是数学中的左开右闭/左闭右开区间。最后的labels就是分三级。

    67440

    十二、R语言的综合应用

    生信技能树学习之R语言的综合应用 一、玩转字符串 图片 x <- "The birch canoe slid on the smooth planks." x [1] "The birch canoe...需要对列表取子集后,才能进行下一步计算,取子集代码是第二句,返回结果是向量,结果如下: [1] "The" "birch" "canoe" "slid" "on" "the...# 对列表/向量中的每个元素(向量)实施相同的操作 test <- list(x = 36:33,y = 32:35,z = 30:27);test #返回值是列表,对列表中的每个元素(向量)求均值(...)对左边的表取子集,取右边表中存在的子集 anti_join(test1,test2,by="name") ###反连接,左边表里在右边表里没有的会被留下来。...#是b的下标,可以给b取子集,也可以给与b对应的其他向量取子集。

    3.1K30

    R语言 数据框、矩阵、列表的创建、修改、导出

    数据框数据框的创建数据框来源主要包括用代码新建(data.frame),由已有数据转换或处理得到(取子集、运算、合并等操作),读取表格文件(read.csv,read.table等)及R语言内置数据函数...csv打开会报错,该知识点用于防止部分代码中错误应用csv套用tsv等#文件读写部分(文件位于R_02的Rproject中)#1.读取ex1.txt txt用read.table读,变量名不需要有"",...#ex2 的.变成了-,R语言将列名的特殊字符-转化了,该编号可能与其他数据中编号无法匹配,ex2...dplyr包中的函数test1 data.frame(name = c('jimmy','nicker','Damon','Sophie'), blood_type...#取子集方法同数据框t(m) #转置行与列,数据框转置后为矩阵as.data.frame(m) #将矩阵转换为数据框列表列表内有多个数据框或矩阵,可通过list函数将其组成一个列表l <- list(m1

    7.9K00

    R语言数据集合并、数据增减、不等长合并

    (ink1,ink2,by="id",all=F) #默认,只取两者的共有的部分 id R M 1 1 9 7 2 2 7 2 其中,all=T代表全连接,all.x=T代表左联结;all.y...=T代表右连接 2、dplyr包 dplyr包的数据合并, 一般用left_join(x,y,by="name") 以x为主,y中匹配到的都放进来, 但,y中没有的则不放过来。...命令是让这两个向量粘合在一起生成新的字符串向量,粘合后的新字符之间没有间隔。...相比来说,其他一些方法要好一些,有dplyr,sqldf中的union 5、sqldf包 利用SQL语句来写,进行数据合并,适合数据库熟悉的人,可参考: R语言︱ 数据库SQL-R连接与SQL语句执行...包中的rbind.fill函数(合并的数据,必须是data.frame),do.call可以用来批量执行。

    13.6K12

    2023.4生信马拉松day7-R语言综合应用

    str_length(x) length(x) 2. str_split(字符串,"拆分符号") 拆分字符串 图片 -(1)拆分之后成为了了列表,列表的每个元素对应原来的每个元素拆分的结果 -(2)列表使用不方便...3. str_sub() 按位置提取字符串子集 str_sub(x,5,9) #提取x的第5到9个字符 4. str_detect() 字符串检测【重要】 -(1)判断每个字符串含不含有某个字母或者多个字母的组合...; -(2)判断之后得到一个与x2相等的逻辑值向量; -(3)可以用来做“根据逻辑值提取x的子集”; str_detect(x2,"h") #判断x的每个字符串含不含有某个字母或者多个字母的组合; str_starts...如何挑出30个数里最大的五个 -(1)排序 -(2)取最后五个 图片 3.向量/列表的隐式循环-lapply() 对列表/向量中的每个元素实施相同的操作 lapply(1:4,rnorm) #批量画图...data.frame(name = c('jimmy','nicker','Damon','Sophie'), blood_type = c("A","

    3.6K80

    Day07 生信马拉松-数据整理中的R

    (x) # 引号内的单个字母/数字/符号数量 length(x) #检测向量内的元素数 1.2 字符串拆分 str_split(x," ") #直接拆分后会变成list的子集 class(str_split...#判断x2中T开头的字符串,输出逻辑向量 str_ends(x2,"e") #判断x2中e结尾的字符串,输出逻辑向量 1.5 字符串替换 x2 str_replace(x2,"o","A") #每个元素里面只替换第一次出现的目标字符...,by="name") #反连接 基本不用 6.表达矩阵画箱线图 6.1操作过程图示 step1 对matrix进行转置:使gene名变为列名,将样本名转化为data.frame中的第一列 ggplot2...dat = t(exp) %>% #将matrix进行行列转置 as.data.frame() %>% #将matrix转为data.frame rownames_to_column() %...#是b的下标,可以给b取子集,也可以给与b对应的其他向量取子集。

    23900

    从零开始的异世界生信学习 R语言部分 06 R应用专题

    list,使用下标循环,可以将每次循环的结果都保存到列表中 ## cbind 按列拼接 a = rnorm(10) b = 1:10 cbind(a,b) ##do.call() 函数是对列表 list...操作的函数,批量操作 图片 图片 分批次将运行结果保存为R.data格式便于管理数据 图片 大段代码暂时不运行可以进行折叠,并加入一个if 判断或者注释掉 表达矩阵箱线图 表达矩阵 R 语言作图要求将宽数据的表达矩阵转变成长数据后昨天...test <- list(x = 36:33,y = 32:35,z = 30:27);test #返回值是列表,对列表中的每个元素(向量)求均值(试试方差var,分位数quantile) lapply...(test1,test2,by="name") ##右连接,以右侧的表的行为准构成新的数据框(第二个写的数据框),左表中多余的数据舍去 full_join(test1,test2,by="name")...##取全集 semi_join(test1,test2,by="name") ##半连接,对左边表格取在右边表格住存在的子集 anti_join(test1,test2,by="name") ##反连接

    2.5K30

    R数据科学整洁之道:使用 tibble 实现简单数据框

    可以在 tibble 中使用在 R 中无效的变量名称(即不符合语法的名称)作为列名称。例如, 列名称可以不以字母开头,也可以包含特殊字符(如空格)。...的使用方法主要有两处不同:打印和取子集。...[['x']] ## [1] 0.8070801 0.1610041 0.3952444 0.1384965 0.5667709 与 data.frame 相比,tibble 更严格:它不能进行部分匹配...最后总结 tibble 相对于数据框来说,更简单,但更方便使用,两者的主要区别是: tibble 不能创建行名。 tibble 不能改变输入的类型(例如,不能将字符串转换为因子)、变量的名称。...tibble 不能进行部分匹配,如果想要访问的列不存在,它会生成一条警告信息。 tibble 打印时更美观。

    1.9K10

    R语言︱list用法、批量读取、写出数据时的用法

    列表是一种特别的对象集合,它的元素也由序号(下标)区分,但是各元素的类型可 以是任意对象,不同元素不必是同一类型。元素本身允许是其它复杂数据类型,比如,列表 的一个元素也允许是列表。...———————————————————————————————————————————————————————————————— list中的字符串型数据如何导出?...: unlist->变成向量 data.frame->变成序号+单词 as.chacter->单个文本 #list中的字符串型数据如何导出?...(Job_Pwordseg.ct[1]) #[1]"c(\"职位\", \"描述\", \"Android\", \"平台\", \"进行\") 变换得到了数据之后,又出现了问题: 如何将list中那么子集合并...[1],Job_Pwordseg.ct[2]) 不等长合并的时候,rbind.fill函数可以很好将数据进行合并,并且补齐没有匹配到的缺失值为NA。

    17.8K52

    从零开始的异世界生信学习 R语言部分 02 数据结构之数据框、矩阵、列表

    数据框 data.frame 数据框 约等于表格:1.数据框不是一个具体文件,只是R语言内部的一个数据;2.数据框每一列只能有一种数据类型 图片 新建和读取数据框 #新建和读取数据框 df1 data.frame...sort表示按列排序 merge(test1,test3,by.x='name',by.y = 'NAME', all = T) #取两个表的合集 #调整数据框中列的顺序,可以用重新取子集的方式 a...,"b","c") #加列名 m m[2,] #矩阵取子集不支持使用$ m[,1] m[2,3] m[2:3,1:2] m #矩阵中的重要函数 t(m) #行列的转置,行变列,列变行,行名和列名都跟着变换...pheatmap::pheatmap(m,cluster_rows = F,cluster_cols = F) #调节函数中的参数,画出的热图不聚类 图片 图片 列表新建和取子集 l <- list(m1...= matrix(1:9, nrow = 3), m2 = matrix(2:9, nrow = 2)) l l[[2]] #列表取子集 l$m1 #列表中的元素有名字,可以用

    1.8K20

    生信课程note-3

    class3数据框、矩阵和列表向量-一维:表格—二维 :matrix 矩阵-二维,只允许一种数据类型;data.frame数据框-二维,每列只允许一种数据类型。...#重点:数据框#1.数据框来源# (1)用代码新建# (2)由已有数据转换或处理得到# (3)读取表格文件 (对数据框操作)# (4)R语言内置数据 (可以直接使用的的数据框)heatmap(volcano...用于取子集的逻辑值向量:与x对应,不必须由x生成。(例子中即通过score为gene取子集)记住,==是等于的意思,>-是赋值的意思## 代码思维#如何取数据框的最后一列?...","r2","r3","r4")#只修改某一行/列的名colnames(df1)[2] 的连接test1 data.frame(name...(test1,test3,by.x = "name",by.y = "NAME")##### 矩阵和列表m <- matrix(1:9, nrow = 3)colnames(m) <- c("a","b

    1.3K40

    50-R茶话会 (十:R编程效率提升指北)

    在循环中对变量进行修改尤其低效, 因为R在修改某些数据类型的子集时会复制整个数据对象。(这个在前面提到过) R以向量、矩阵为基础运算单元, 在进行向量、矩阵运算时效率很高, 应尽量采用向量化编程。...为了提高R程序的运行效率,需要尽可能利用R的向量化特点, 尽可能使用已有的高效函数, 还可以把运行速度瓶颈部分改用C++、FORTRAN等编译语言实现, 可以用R的profiler工具查找运行瓶颈。..., 有循环的程序也比较冗长, 与R的向量化简洁风格不太匹配。...要注意的是, 上面第二个程序中的as.data.frame(x)也是效率较差的。将数据保存在列表中比保存在数据框中访问效率高, 数据框提供的功能更丰富。...如果使用RStudio软件,可以用Profile菜单执行性能数据收集与分析, 可以在图形界面中显示程序中哪些部分运行花费时间最多。

    89310
    领券