读取数据。使用链运算符将字符串作为因子的帧=R中的False

读取数据。使用链运算符将字符串作为因子的帧=R中的False,r,dataframe,chaining,rvest,R,Dataframe,Chaining,Rvest,我有一个读取数据帧的表源。我知道,默认情况下,外部源作为因子读入数据帧。我想在下面的数据帧调用中应用stringsAsFactors=FALSE,但这样做时会抛出一个错误。我仍然可以使用链接并将stringsAsFactors=FALSE library(rvest) pvbData <- read_html(pvbURL) pvbDF <- pvbData %>% html_nodes(xpath = `//*[@id="ajax_result_table"]`) %>

我有一个读取数据帧的表源。我知道,默认情况下,外部源作为因子读入数据帧。我想在下面的数据帧调用中应用
stringsAsFactors=FALSE
,但这样做时会抛出一个错误。我仍然可以使用链接并将
stringsAsFactors=FALSE

library(rvest)
pvbData <- read_html(pvbURL)
pvbDF <- pvbData %>%
html_nodes(xpath = `//*[@id="ajax_result_table"]`) %>% 
html_table() %>% 
data.frame()

data.frame(,stringsAsFactors=FALSE)  <- Throws an error
库(rvest)
PVB数据%
html_表()%>%
data.frame()

data.frame(,stringsAsFactors=FALSE)尽管该语句在逻辑上应该是
data.frame(stringsAsFactors=FALSE)
如果应用链接,即使该语句也不会生成所需的输出

原因是对
stringsafactors
选项的使用存在误解。仅当逐列创建data.frame时,此选项才有效。例如:

a <- data.frame(x = c('a','b'),y=c(1,2),stringsAsFactors = T)
str(a)

'data.frame':   2 obs. of  2 variables:
 $ x: Factor w/ 2 levels "a","b": 1 2
 $ y: num  1 2

a <- data.frame(x = c('a','b'),y=c(1,2),stringsAsFactors = F)
str(a)

'data.frame':   2 obs. of  2 variables:
 $ x: chr  "a" "b"
 $ y: num  1 2
更新: 如果列已经是一个因子,则不能使用此命令将其转换为字符向量。最好先输入字符,然后重试

有关更多详细信息,请参阅

library(rvest)
pvbData <- read_html(pvbURL)
pvbDF <- pvbData %>%
html_nodes(xpath = `//*[@id="ajax_result_table"]`) %>% 
html_table()
data.frame(as.list(pvbDF),stringsAsFactors=F)