使用链运算符在 R 中以字符串作为因子读取 Data.Frames = False
Reading in Data.Frames with Strings as factors = False in R using chain operator
我有一个 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
我知道这可能非常简单,但我很难找到一种方法来完成这项工作。感谢您的帮助。
虽然如果您正在应用链接,该语句在逻辑上应该是 data.frame(stringsAsFactors=FALSE)
,但即使是该语句也不会产生所需的输出。
原因是对stringsAsFactors
选项的使用存在误解。此选项仅在逐列设置 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
如果您将 data.frame 作为输入,stringsAsFactors 选项将不起作用
解决方案:
将链接结果存储到这样的变量中:
library(rvest)
pvbData <- read_html(pvbURL)
pvbDF <- pvbData %>%
html_nodes(xpath = `//*[@id="ajax_result_table"]`) %>%
html_table()
然后应用这个命令:
data.frame(as.list(pvbDF),stringsAsFactors=F)
更新:
如果该列已经是一个因子,则不能使用此命令将其转换为字符向量。最好先 as.character 然后重试。
详情请参考Change stringsAsFactors settings for data.frame
我有一个 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
我知道这可能非常简单,但我很难找到一种方法来完成这项工作。感谢您的帮助。
虽然如果您正在应用链接,该语句在逻辑上应该是 data.frame(stringsAsFactors=FALSE)
,但即使是该语句也不会产生所需的输出。
原因是对stringsAsFactors
选项的使用存在误解。此选项仅在逐列设置 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
如果您将 data.frame 作为输入,stringsAsFactors 选项将不起作用
解决方案:
将链接结果存储到这样的变量中:
library(rvest)
pvbData <- read_html(pvbURL)
pvbDF <- pvbData %>%
html_nodes(xpath = `//*[@id="ajax_result_table"]`) %>%
html_table()
然后应用这个命令:
data.frame(as.list(pvbDF),stringsAsFactors=F)
更新:
如果该列已经是一个因子,则不能使用此命令将其转换为字符向量。最好先 as.character 然后重试。
详情请参考Change stringsAsFactors settings for data.frame