x [,1] [,2] [,3] -6ren">
gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 10:22:19 26 4
gpt4 key购买 nike

考虑下面的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]]"

现在,我不希望将整数 1020转换为字符串。
我如何在不进行任何此类转换的情况下执行此操作?我会
当然也想知道为什么会发生这种转换。我看着 cbind帮助,还尝试了谷歌搜索,但没有运气找到
解。我也相信在某些情况下。 R将字符串转换为
因素,我也不希望这种情况发生,尽管似乎
发生在这里。

最佳答案

vector 和矩阵只能是单一类型, vector 上的cbindrbind将提供矩阵。在这些情况下,数字值将提升为字符值,因为该类型将包含所有值。

(请注意,在您的rbind示例中,促销 Activity 发生在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

或(专门使用 data.framecbind版本)
> 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,但首先将 data.frame设置为与data.frames合并):
> 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

关于r - 使用cbind从两个向量创建数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12787551/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com