[英]Error: "argument is not an atomic vector; coercing[1] FALSE"
我是 R 的新手,遇到問題 (1) 將以前的堆棧溢出答案概括為我的情況,以及 (2) 理解 R 文檔。 所以我求助於這個社區,希望有人能引導我完成。
我有這段代碼,其中data1
是一個文本文件:
data1 <- read.delim(file.choose())
pattern <- c("An Error Has Occurred!")
str_detect(data1, regex(pattern, ignore_case = FALSE))
我看到的錯誤信息是:
argument is not an atomic vector; coercing[1] FALSE
當我使用 is.vector() 來確認數據類型時,看起來應該沒問題:
is.vector(pattern)
#this returns [1] TRUE as the output
我用於 str_detect function 的參考是https://www.rdocumentation.org/packages/stringr/versions/1.4.0/topics/str_detect 。
編輯 1:這是data1
的 output - 我試圖將第 4 行與最后一行“發生錯誤:”相匹配:
Silk.Road.Forums
<fctr>
*
Welcome, Guest. Please login or register.
[ ] [ ] [Forever] [Login]
Login with username, password and session length
[ ] [Search]
â\200¢ Home
â\200¢ Search
â\200¢ Login
â\200¢ Register
â\200¢ Silk Road Forums
An Error Has Occurred!
The user whose profile you are trying to view does not exist.
Back
â\200¢ SMF | SMF © 2013, Simple Machines
編輯 2:經過一些初步測試,問題似乎出在我打開data1
的方式上,不一定是str_detect()
。
當我剛創建一個向量時,它起作用了:
dataVector <- c("An Error Has Occurred!", "another one")
pattern <- c("An Error Has Occurred!")
str_detect(dataVector, pattern) # returns [1] TRUE FALSE
但是當我嘗試在文件上使用 function 時,它不會
data1 <- read.delim(file.choose())
pattern <- c("An Error Has Occurred!")
str_detect(data1, pattern) # returns the atomic vector error message`
問題:所以我確信問題是 (1) 我使用了錯誤的 function 或 (2) 我加載的文件對於這種文件類型是錯誤的。 我以前從未在 R 中使用過文本文件,所以我有點迷路了。
這就是我所擁有的,提前感謝任何願意提供幫助的人!
我認為這里發生的事情是read.delim
正在將您的文本文件作為數據框讀取,而不是str_detect
需要的向量。
為了快速解決您的問題,您可以嘗試。
str_detect(data1[,1], "An Error Has Occurred!")
這是有效的,因為現在 data1 是一個 1 列數據框。 data2[,1]
返回該數據幀的第一(也是唯一)列的所有行,並將其作為向量返回。
然而! 這里的問題是您使用的read.delim
用於分隔文本文件(即,例如具有分隔符的 csv 文件),而您的數據不是。 更好的是使用readlines
讀取行,它將返回一個字符向量。
# open a connection to your file
con <- file('path/to/file.txt',open="r")
# read file contents
data1 <- readLines(con)
# close the connection
close(con)
然后str_detect
應該可以工作。
str_detect(data1, "An Error Has Occurred!")
正如 .data.frame() 您的數據一樣, str_replace() 工作正常!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.