我有一个读取数据框的表源。我知道默认情况下,外部源被读入数据帧作为因素。我想在下面的数据框调用中应用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
我知道这可能非常简单,但我很难找到一种方法来完成这项工作。谢谢你的帮助。
答案 0 :(得分:2)
虽然如果您正在应用链接,该语句应该在逻辑上为vis
,但即使此语句也不会产生所需的输出。
原因是误解了data.frame(stringsAsFactors=FALSE)
选项的使用。仅当您逐列创建data.frame时,此选项才有效。例如:
stringsAsFactors
如果您将data.frame作为输入,stringsAsFactors选项不起作用
解决方案:
将链接结果存储到如下变量:
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()
如果列已经是一个因子,那么您无法使用此命令将其转换为字符向量。最好先改变它,然后重试。
您可以参考Change stringsAsFactors settings for data.frame了解更多详情。