我有以下创建一个数据框。我的问题是,数据框行名称显示为[1,],[2,],[3,],[4,]等,而不是仅仅1,2,3,4等(见下文的输出)。为什么以及如何解决这个问题,只是让我的行名称像往常一样显示(递增的数字)。
Code:
df <- data.frame(id=c("id"),nobs=c("nobs"))
df <- cbind(id,nobs)
df
id和nobs是两个向量,每个向量有5个数值……
Current output:
id nobs
[1,] 2 3653
[2,] 4 3653
[3,] 8 1462
[4,] 10 1097
[5,] 12 732
Desired output:
id nobs
1 2 3653
2 4 3653
3 8 1462
4 10 1097
5 12 732
2条答案
按热度按时间aiazj4mn1#
你的第二个命令完全覆盖了第一个命令
由于cbind的输入是向量(我假设),因此默认情况下它返回一个矩阵。
此外,还可以通过以下方式将其强制为 Dataframe
但这也太夸张了
9fkzdhlc2#
**注意:**我不建议你使用这两种方法。如果你想要一个
data.frame
,你可以直接创建它,就像Paul展示的那样(或者你自己已经做过了)。这只是为了说明为什么会发生这种情况。虽然有时候使用sapply
时,输出会是一个矩阵,你可能想绑定两个这样的矩阵,并将它们作为data.frame
。从
cbind
(?cbind
)的帮助页面:函数cbind和rbind是S3的泛型,具有 Dataframe 的方法。如果至少一个参数是 Dataframe ,其余参数是向量或矩阵,则将使用 Dataframe 方法。
** Dataframe 方式**
cbind数据框方法只是data.frame(...,check.names = FALSE)的 Package 器。这意味着它将拆分数据框参数中的矩阵列,并将字符列转换为因子,除非指定stringsAsFactors = FALSE。
因此,如果你传递两个向量,
data.frame
的 Package 器不会被调用。因此,你得到一个矩阵。你能做什么?
1)您可以创建 * 至少一个 *
data.frame
参数并传递给cbind
2)用
as.data.frame(.)
Packagecbind
参数。