【发布时间】:2015-03-07 00:41:42
【问题描述】:
在创建其内容包含重复值的列时,我注意到以下有关因素。
1.如果在创建数据框时将具有重复字符值的列作为数据框的一部分,则属于类因素,但如果稍后附加相同的列,则尽管值是类字符在这两种情况下都是一样的。这是为什么呢?
#creating a data frame
name = c('waugh','waugh','smith')
age = c(21,21,27)
df = data.frame(name,age)
#adding a new column which has the same values as the 'name' column above, to the data frame
df$newcol = c('waugh','waugh','smith')
#you can see that the class'es of the two are different though the values are same
class(df$name)
## [1] "factor"
class(df$newcol)
## [1] "character"
-
只有具有重复字母内容的列才会成为一个因素;如果列包含重复的数值,则不会将其视为因子。这是为什么?我很可能是指1-Male,0-Female,在这种情况下,它应该是一个因素?
请注意,这两列都包含重复值
class(df$name) ## [1] "factor" class(df$age) ## [1] "numeric"
【问题讨论】:
-
参见
?data.frame和stringsAsFactors参数。$<-.data.frame不调用data.frame构造函数,因此不会发生任何转换。 -
对 Joshua 的评论唯一要补充的是,导致创建因子列的不是重复值,而是
data.frame如何处理 any 字符向量. (没有“决定”。) -
@JoshuaUlrich 谢谢,我在创建 df 时尝试了 stringsAsFactors=FALSE。不过,我有一个问题,当我添加一个新列时,如何将其设置为 TRUE,例如 df$newcol = c('waugh','waugh','smith')
标签: r