R数据帧行名称显示矩阵而不是数值

R数据帧行名称显示矩阵而不是数值,r,dataframe,rowname,R,Dataframe,Rowname,我有以下步骤来创建数据帧。我的问题是,数据帧行名称显示为[1、]、[2、]、[3、]、[4、]等,而不是仅显示1、2、3、4等(输出见下文)。为什么以及如何解决这个问题,使我的行名称像往常一样显示(递增的数字) 第二个命令完全覆盖第一个命令。你想要的是 df <- data.frame(id=id, nobs=nobs) df您的第二个命令将完全覆盖第一个命令。你想要的是 df <- data.frame(id=id, nobs=nobs) df注意:我不建议您使用这两种方法中的

我有以下步骤来创建数据帧。我的问题是,数据帧行名称显示为[1、]、[2、]、[3、]、[4、]等,而不是仅显示1、2、3、4等(输出见下文)。为什么以及如何解决这个问题,使我的行名称像往常一样显示(递增的数字)


第二个命令完全覆盖第一个命令。你想要的是

df <- data.frame(id=id, nobs=nobs)

df您的第二个命令将完全覆盖第一个命令。你想要的是

df <- data.frame(id=id, nobs=nobs)

df注意:我不建议您使用这两种方法中的任何一种。如果您想要一个
data.frame
,您可以直接创建它,正如Paul所展示的(或者您自己所做的)。这只是为了说明为什么会发生这种情况。尽管有时使用
sapply
时,输出会是一个矩阵,您可能希望绑定两个这样的矩阵,并将它们作为
data.frame

cbind
?cbind
)的帮助页面:

cbind和rbind函数是S3通用函数,具有用于数据帧的方法。如果至少有一个参数是数据帧,其余参数是向量或矩阵,则将使用数据帧方法

数据帧方法

cbind data frame方法只是data.frame(…,check.names=FALSE)的包装器。这意味着它将拆分数据帧参数中的矩阵列,并将字符列转换为因子,除非指定了stringsAsFactors=FALSE

因此,如果传递两个向量,则不会调用
data.frame
的包装器。因此,可以得到一个矩阵

你能做什么?
1) 您可以创建至少一个
data.frame
参数并将其传递给
cbind

2) 将
cbind
参数包装为
as.data.frame(.)

x as.data.frame(cbind(x,y))
xy
1 1  6
2 2  7
3 3  8
4 4  9
5 5 10

注意:我不建议您使用这两种方法中的任何一种。如果您想要一个
data.frame
,您可以直接创建它,正如Paul所展示的(或者您自己所做的)。这只是为了说明为什么会发生这种情况。尽管有时使用
sapply
时,输出会是一个矩阵,您可能希望绑定两个这样的矩阵,并将它们作为
data.frame

cbind
?cbind
)的帮助页面:

cbind和rbind函数是S3通用函数,具有用于数据帧的方法。如果至少有一个参数是数据帧,其余参数是向量或矩阵,则将使用数据帧方法

数据帧方法

cbind data frame方法只是data.frame(…,check.names=FALSE)的包装器。这意味着它将拆分数据帧参数中的矩阵列,并将字符列转换为因子,除非指定了stringsAsFactors=FALSE

因此,如果传递两个向量,则不会调用
data.frame
的包装器。因此,可以得到一个矩阵

你能做什么?
1) 您可以创建至少一个
data.frame
参数并将其传递给
cbind

2) 将
cbind
参数包装为
as.data.frame(.)

x as.data.frame(cbind(x,y))
xy
1 1  6
2 2  7
3 3  8
4 4  9
5 5 10

+1用于直接推荐使用
data.frame()
。太多的人被卷入到使用
cbind
构建数据帧的漩涡中,而这并不是必需的,通常只会导致问题。谢谢你,保罗。这很有效,我现在更明白了。另外,如果我没有把你的答案选出来,我也很抱歉。我刚从Arun.+1上看到了第一个推荐直接使用
data.frame()
。太多的人被卷入到使用
cbind
构建数据帧的漩涡中,而这并不是必需的,通常只会导致问题。谢谢你,保罗。这很有效,我现在更明白了。另外,如果我没有把你的答案选出来,我也很抱歉。我刚从阿伦那里看到的第一个,谢谢你,阿伦!这很有帮助。我是R新手,现在我看到了内置帮助实际上是如何有用的。我怀疑,但就是不确定。还有,如果我没有谢谢你,很抱歉,阿伦!这很有帮助。我是R新手,现在我看到了内置帮助实际上是如何有用的。我怀疑,但就是不确定。还有,如果我没有,很抱歉
df <- data.frame(id=id, nobs=nobs)
df <- data.frame(cbind(id, nobs))
x <- 1:5
y <- 6:10
> cbind(data.frame(x), y)
  x  y
1 1  6
2 2  7
3 3  8
4 4  9
5 5 10

> as.data.frame(cbind(x,y))
  x  y
1 1  6
2 2  7
3 3  8
4 4  9
5 5 10