2016-11-19 2 views
0

У меня есть файл (прилагается), из которого я получаю посещение сотрудника и хочу проверить, есть ли в нем 9 ноября или нет?Как печатать значения класса символов в R?

setwd("F://Uni////DataScience") 
mydata<-file("Emp_A.txt", open="r") 
line<-readLines(mydata) 
print(line) 
class(line) 
newTxt <- unlist(strsplit(line, split = ", ")) 
print(newTxt) 
x=0 
while(x<=length(newTxt)){ 
if(newTxt="November 9") 
    print("*****") 
    x=x+1 
} 
# .txt file format is: 
Sunday, November 1, 2015 
-- 
-- 
Monday, November 2, 2015 
10:21:27 
17:58:12 
Tuesday, November 3, 2015 
10:13:09 
18:52:44 
Wednesday, November 4, 2015 
10:11:52 
18:40:36 
Thursday, November 5, 2015 
10:31:42 
18:16:57 
Friday, November 6, 2015 
10:13:13 
-- 
Saturday, November 7, 2015 
-- 
-- 
Sunday, November 8, 2015 
-- 
-- 
# and so on.. 

поэтому сначала, я получаю строки из файла, а затем разделить его с «» так что я, возможно, отделили „November_space_dates“. А потом я хочу проверить его.

+0

'any (grepl (« 9 ноября », readLines (« Emp_A.txt »), fixed = TRUE))' должен сделать это –

ответ

0

Если цель здесь, чтобы проверить, является ли или нет «9 ноября» находится в файле, то вы можете написать простую функцию, которая делает только, что со следующим:

is_nov9_in <- function(file_name) { 
    file_conn <- file(file_name, open = 'r') 
    line_items <- readLines(file_conn) 
    close(file_conn) 
    ifelse(sum(grepl('November 9', line_items, ignore.case = TRUE)) > 0, TRUE, FALSE) 
} 

is_nov9_in(file_name = 'Emp_A.txt') 
[1] FALSE 

Здесь функция проверяет, является ли " 9 ноября »находится в файле« Emp_A.txt ». Поскольку «9 ноября» не находится в файле, функция возвращает FALSE.

Но если вы ищете функции общего назначения, которая проверяет, является ли данная дата находится в файле, то вы можете написать более общую функцию имитируя следующее:

is_month_day_in <- function(file_name, month = 'November', day = 9) { 
    file_conn <- file(file_name, open = 'r') 
    line_items <- readLines(file_conn) 
    close(file_conn) 
    DAY <- paste(month, day, sep = ' ') 
    ifelse(sum(grepl(DAY, line_items, ignore.case = TRUE)) > 0, TRUE, FALSE) 
} 

is_month_day_in(file_name = 'Emp_A.txt', month = 'November', day = 7) 
[1] TRUE 

Здесь функция более общий; поэтому вы можете подать его month и day, и он ищет эту комбинацию month и day в файле. По умолчанию эта общая функция выполняет поиск «9 ноября», если вы подаете только file_name. Например, is_month_day_in('Emp_A.txt') должен вернуть FALSE, потому что он по умолчанию ищет «9 ноября». Но когда вы указываете точные month и day, которые вы хотите, результат будет зависеть от того, будет ли эта комбинация month и day в файле. Например, поскольку «7 ноября» находится в файле, тогда is_month_day_in(file_name = 'Emp_A.txt', month = 'November', day = 7) возвращает TRUE.

Надеюсь, это поможет.

+0

Спасибо большое! это сработало! – user5714576

Смежные вопросы