簡體   English   中英

錯誤:“參數不是原子向量;強制 [1] FALSE”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM