Я думаю, что здесь может быть несколько вещей для адреса:
Во-первых, с read_tsv
вы можете указать типы столбцов как double
, если это уместно, поэтому значения не считываются как символыстроки. Это повлияет на вашу способность фильтровать и подмножество на основе Mass
.
Далее, оператор between
имеет синтаксис:
between(x, left, right)
, где x <= right
и x >= left
,Если вы хотите убедиться, что значение mc
находится между 375.2 и 375.4, вы можете вместо этого выбрать between(X1, mc-limit, mc+limit)
. Обратите внимание, что поскольку заголовок не был прочитан, переменная Mass
сначала считается X1
.
Когда вы используете write.table
и добавляете, вы можете установить col.names
в FALSE
(или включите заголовок при первой записи).
Надеюсь, это полезно для вас.
for (f in fs){
fname <- file.path(path, f)
df <- read_tsv(fname, col_names = FALSE, skip=1, col_types = "dd")
#filters the data that includes the target mass
df <- filter(df, between(X1, mc-limit, mc+limit))
#create new data based on contents
allSpectra <- data.frame(df,f)
#write new data to sep file
write.table(allSpectra ,"allwobble.csv",
append= T,
sep=",",
row = F,
col.names = FALSE
)
}