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