使用cbind从两个向量创建数据帧

考虑以下R代码。

> x = cbind(c(10, 20), c("[]", "[]"), c("[[1,2]]","[[1,3]]"))
> x
     [,1] [,2] [,3]     
[1,] "10" "[]" "[[1,2]]"
[2,] "20" "[]" "[[1,3]]"

同样

> x = rbind(c(10, "[]", "[[1,2]]"), c(20, "[]", "[[1,3]]"))
> x
     [,1] [,2] [,3]     
[1,] "10" "[]" "[[1,2]]"
[2,] "20" "[]" "[[1,3]]"

现在,我不想将整数10和20转换成字符串。
没有任何这样的转换,我该如何执行此操作?我会的
当然也想知道为什么会发生这种转换。我在看
cbind帮助,也尝试了谷歌,但没有运气找到
解。我也认为在某些情况下。 R将字符串转换为
因素,而且我也不希望这种情况发生,尽管似乎没有
在这里发生。

向量和矩阵只能是一个单一类型,并且向量中的cbind和rbind将给出矩阵。在这些情况下,数值将被提升为字符值,因为该类型将保存所有值。

(请注意,在您的rbind示例中,促销发生在c调用中:

> c(10, "[]", "[[1,2]]")
[1] "10"      "[]"      "[[1,2]]"

如果你想要一个矩形结构,列可以是不同的类型,你想要一个data.frame。以下任何一个都可以让你满足你想要的:

> x = data.frame(v1=c(10, 20), v2=c("[]", "[]"), v3=c("[[1,2]]","[[1,3]]"))
> x
  v1 v2      v3
1 10 [] [[1,2]]
2 20 [] [[1,3]]
> str(x)
'data.frame':   2 obs. of  3 variables:
 $ v1: num  10 20
 $ v2: Factor w/ 1 level "[]": 1 1
 $ v3: Factor w/ 2 levels "[[1,2]]","[[1,3]]": 1 2

或(具体使用cbind的data.frame版本)

> x = cbind.data.frame(c(10, 20), c("[]", "[]"), c("[[1,2]]","[[1,3]]"))
> x
  c(10, 20) c("[]", "[]") c("[[1,2]]", "[[1,3]]")
1        10            []                 [[1,2]]
2        20            []                 [[1,3]]
> str(x)
'data.frame':   2 obs. of  3 variables:
 $ c(10, 20)              : num  10 20
 $ c("[]", "[]")          : Factor w/ 1 level "[]": 1 1
 $ c("[[1,2]]", "[[1,3]]"): Factor w/ 2 levels "[[1,2]]","[[1,3]]": 1 2

或者(使用cbind,但使第一个数据框架,使其结合为数据。框架):

> x = cbind(data.frame(c(10, 20)), c("[]", "[]"), c("[[1,2]]","[[1,3]]"))
> x
  c.10..20. c("[]", "[]") c("[[1,2]]", "[[1,3]]")
1        10            []                 [[1,2]]
2        20            []                 [[1,3]]
> str(x)
'data.frame':   2 obs. of  3 variables:
 $ c.10..20.              : num  10 20
 $ c("[]", "[]")          : Factor w/ 1 level "[]": 1 1
 $ c("[[1,2]]", "[[1,3]]"): Factor w/ 2 levels "[[1,2]]","[[1,3]]": 1 2
http://stackoverflow.com/questions/12787551/creating-a-data-frame-from-two-vectors-using-cbind

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:使用cbind从两个向量创建数据帧