Error: "argument is not an atomic vector; coercing[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 函数的参考是 https://www.rdocumentation.org/packages/stringr/versions/1.4.0/topics/str_detect。
编辑 1: 这是 data1
的输出 - 我试图匹配第 4 行到最后一行 "An Error Has Occurred!":
Silk.Road.Forums
<fctr>
*
Welcome, Guest. Please login or register.
[ ] [ ] [Forever] [Login]
Login with username, password and session length
[ ] [Search]
â0¢ Home
â0¢ Search
â0¢ Login
â0¢ Register
â0¢ Silk Road Forums
An Error Has Occurred!
The user whose profile you are trying to view does not exist.
Back
â0¢ 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
但是当我尝试在文件上使用该函数时,它没有
data1 <- read.delim(file.choose())
pattern <- c("An Error Has Occurred!")
str_detect(data1, pattern) # returns the atomic vector error message`
问题: 所以我确信问题是 (1) 我使用了错误的函数或 (2) 我加载的文件错误这种文件类型。我以前从未在 R 中使用过文本文件,所以我有点迷路了。
这就是我的全部,提前感谢任何愿意提供帮助的人!
我认为这里发生的事情是 read.delim
正在将您的文本文件作为数据框读取,而不是 str_detect
需要的向量。
要快速解决问题,您可以尝试一下。
str_detect(data1[,1], "An Error Has Occurred!")
之所以可行,是因为现在 data1 是一个 1 列数据框。 data2[,1]
return 该数据框的第一列(也是唯一一列)的所有行,return 将其作为向量。
但是!这里的问题是您使用的是 read.delim
用于分隔的文本文件(即像 csv 文件一样有分隔符,例如','),而您的数据不是。更好的方法是使用函数 readlines
,它将 return 你一个字符向量。
# 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!")
只需 as.data.frame() 您的数据,str_replace() 工作正常!
我是 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 函数的参考是 https://www.rdocumentation.org/packages/stringr/versions/1.4.0/topics/str_detect。
编辑 1: 这是 data1
的输出 - 我试图匹配第 4 行到最后一行 "An Error Has Occurred!":
Silk.Road.Forums
<fctr>
*
Welcome, Guest. Please login or register.
[ ] [ ] [Forever] [Login]
Login with username, password and session length
[ ] [Search]
â0¢ Home
â0¢ Search
â0¢ Login
â0¢ Register
â0¢ Silk Road Forums
An Error Has Occurred!
The user whose profile you are trying to view does not exist.
Back
â0¢ 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
但是当我尝试在文件上使用该函数时,它没有
data1 <- read.delim(file.choose())
pattern <- c("An Error Has Occurred!")
str_detect(data1, pattern) # returns the atomic vector error message`
问题: 所以我确信问题是 (1) 我使用了错误的函数或 (2) 我加载的文件错误这种文件类型。我以前从未在 R 中使用过文本文件,所以我有点迷路了。
这就是我的全部,提前感谢任何愿意提供帮助的人!
我认为这里发生的事情是 read.delim
正在将您的文本文件作为数据框读取,而不是 str_detect
需要的向量。
要快速解决问题,您可以尝试一下。
str_detect(data1[,1], "An Error Has Occurred!")
之所以可行,是因为现在 data1 是一个 1 列数据框。 data2[,1]
return 该数据框的第一列(也是唯一一列)的所有行,return 将其作为向量。
但是!这里的问题是您使用的是 read.delim
用于分隔的文本文件(即像 csv 文件一样有分隔符,例如','),而您的数据不是。更好的方法是使用函数 readlines
,它将 return 你一个字符向量。
# 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!")
只需 as.data.frame() 您的数据,str_replace() 工作正常!