我的数据集如下
File_name Folder
ord.cpp 1
rod.ibo 1
ppol.h 2
lko.cpp 3
rto.cp 3
tax.mo 2
t_po..lo.cpp 4
我需要对该数据集进行子集化,以便在数据集中仅出现File_name以“ .cpp”或“ .h”结尾的行
答案 0 :(得分:1)
使用grepl
作为基本R选项:
df_subset <- df[grepl("\\.(?:cpp|h)$", df$File_name), ]
df_subset
File_name Folder
1 ord.cpp 1
3 ppol.h 2
4 lko.cpp 3
7 t_po..lo.cpp 4
答案 1 :(得分:0)
我们还可以使用file_ext
包中的tools
函数来获取文件的文件扩展名,然后使用它来对数据帧进行子集化。
library(tools)
df[file_ext(df$File_name) %in% c("cpp", "h"), ]
# File_name Folder
#1 ord.cpp 1
#3 ppol.h 2
#4 lko.cpp 3
#7 t_po..lo.cpp 4
答案 2 :(得分:0)
Base R解决方案:
# Looking for a string eding with .cpp or .h
df[endsWith(df$File_name,(".cpp"))|endsWith(df$File_name,(".h")),]
输出:
File_name Folder
1 ord.cpp 1
3 ppol.h 2
4 lko.cpp 3
7 t_po..lo.cpp 4
答案 3 :(得分:0)
一种dplyr
解决方案:
df %>%
filter(str_detect(File_name, ".cpp|.h"))
File_name Folder
1 ord.cpp 1
2 ppol.h 2
3 lko.cpp 3
4 t_po..lo.cpp 4
或者:
df %>%
filter(grepl(".cpp|.h", File_name))
File_name Folder
1 ord.cpp 1
2 ppol.h 2
3 lko.cpp 3
4 t_po..lo.cpp 4