gpt4 book ai didi

r - R 中的 data.frame(cbind...) 与 data.frame(...)

转载 作者:行者123 更新时间:2023-12-03 21:28:20 26 4
gpt4 key购买 nike

我想找出用法之间的区别

data.frame(a,b,c,y)


data.frame(cbind(a,b,c,y))

我有三个包含因子(文本)的向量 a,b,c 和一个 (y) 存储计数(数字)。

根据符号,我在运行这个模型时得到不同的答案
model.glm <- glm(y ~ a * b * c, data=blabla, family=poisson)

我想这是因为其中一个因素是“无因素”,但我不确定。
哪种方式是正确的?

最佳答案

默认情况下,cbind返回 matrix , 只能有一种数据类型。混合数据类型(例如数字和字符)通常会被强制转换为字符。例如:

a <- 1:3
b <- c("a", "b", "c")
cb <- cbind(a,b)
cb
a b
[1,] "1" "a"
[2,] "2" "b"
[3,] "3" "c"
class(cb)
[1] "matrix"
typeof(cb)
[1] "character"

当您将其传递给 data.frame 时,默认情况下,字符被转换为因子( StringsAsFactors = TRUE ;设置为 FALSE 以抑制这种行为),它们基本上是字符串的整数表示。
df <- data.frame(cb)
typeof(df$a)
[1] "integer"
typeof(df$b)
[1] "integer"
class(df$a)
[1] "factor"
class(df$b)
[1] "factor"

我假设这是 不是 您想要的行为,以及自 data.frame会很好 cbind在保持原始类型的同时为您提供一些东西(除了将字符串转换为因子,正如我所说,可以被抑制),我会坚持使用更简单的 data.frame(a,b)构造。

关于r - R 中的 data.frame(cbind...) 与 data.frame(...),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30101276/

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