data.frame()中的stringsAsFactors如何工作?

时间:2016-12-28 08:03:17

标签: r dataframe

data <- sqlQuery(connection, "SELECT col1, col2, col3 FROM table1")

d <- data.frame(data, stringsAsFactors = FALSE)

transform(d, col1 = as.character(col1), stringsAsFactors = FALSE)
在这种情况下,

d仍有factor类型的列。

str(d)

'd': 1943 obs. of 4 variables:
$ col1: Factor w/ 5 levels ....

但是当我第一次陈述时;

options(stringsAsFactors = FALSE)

它有效,但它设置全局。为什么内部陈述没有效果?

1 个答案:

答案 0 :(得分:3)

阐述David Ahrenburg的评论,请尝试

data <- sqlQuery(connection, "SELECT col1, col2, col3 FROM table1", stringsAsFactors = FALSE)

?sqlQuery的帮助页RODBC说:

  

sqlQueryRODBC的主力函数。它将SQL语句查询发送到服务器,并通过sqlGetResults检索(部分或全部)结果。

sqlQuery有一个...参数,用于传递给sqlGetResults的其他参数。

查看sqlGetResults的使用部分(在同一帮助页面上),您会发现存在使用以下默认值的参数stringsAsFactors

  

stringsAsFactors = default.stringsAsFactors()