使用 data.table 从变量文件名中提取扩展名

问题描述 投票:0回答:1

我有一个 data.table,在字符串列中存储异构文件名。 我想从该列中提取扩展名,始终采用最后一个点出现后的字符。有时文件名可能包含更多点。

我尝试过:

files0=data.table(filename=c("simple_file.csv","file with.two dots.xls"))
files0[,chunks:=length(tstrsplit(filename,"\\."))]
files0[,extension:=tstrsplit(filename,"\\.")[chunks]]

如何确保

tstrsplit
仅应用于每一行,以便此方法有效?

PS:我还设法生成一个列,用

str_count
存储正确数量的文本“块”,但问题仍然是,当我想创建“扩展名”列时,整个“文件名”列似乎是用于每一行。

string data.table
1个回答
0
投票

您可以通过使用

sapply()
对每个文件名和拆分文件名应用
strsplit(filename, "\\.", fixed = TRUE)
函数,然后使用
tail(1)
提取每个拆分的最后一个元素,现在使用
sub()

删除点之前的所有内容
files0[, extension := sub("\\..*$", "", sapply(strsplit(filename, "\\.", fixed = TRUE), tail, 1))]
© www.soinside.com 2019 - 2024. All rights reserved.