连接R中的数据帧值未按预期工作

连接R中的数据帧值未按预期工作,r,dataframe,R,Dataframe,考虑以下代码: > a <- data.frame(name=c('a','b','c')) > b <- data.frame(type=a$name[1]) > c <- data.frame(type=c(a$name[1],a$name[2])) > b type 1 a > c type 1 1 2 2 >a b c b 类型 1A >c 类型 1 1 2 2 为什么b$type的值为a,即实际分

考虑以下代码:

> a <- data.frame(name=c('a','b','c'))
> b <- data.frame(type=a$name[1])
> c <- data.frame(type=c(a$name[1],a$name[2]))
> b
  type
1    a
> c
  type
1    1
2    2
>a b c b
类型
1A
>c
类型
1    1
2    2
为什么
b$type
的值为
a
,即实际分配的值,而
c$type
则取索引号(
1
2
)的值?

嗯,$name是一个因子,而不是一个字符向量,你不能将这样的因子串联起来(因为
c
函数目前不处理因子)。因子实际上是带有
levels
属性(和类)的整数向量,因此
c
函数只使用整数值。这可能被认为是一个bug

组合系数的一种方法是使用
取消列出
,该方法具有针对这种情况的特殊代码:

c <- data.frame(type=unlist(list(a$name[1], a$name[2])))
c好吧,$name是一个因子,而不是一个字符向量,你不能将这样的因子串联起来(因为
c
函数目前不处理因子)。因子实际上是带有
levels
属性(和一个类)的整数向量,因此
c
函数只使用整数值。这可能被认为是一个bug

组合系数的一种方法是使用
取消列出
,该方法具有针对这种情况的特殊代码:

c <- data.frame(type=unlist(list(a$name[1], a$name[2])))
c
a <- data.frame(name=c('a','b','c'), stringsAsFactors=FALSE)
c <- data.frame(type=c(a$name[1],a$name[2]))