繁体   English   中英

为什么使用`data.frame`函数合并两个`data.frame`对象会切断长变量名?

[英]Why does combining two `data.frame` objects using the `data.frame` function cut off a long variable name?

我注意到,如果我尝试两种不同的组合data.frame对象到一个更大的data.frame使用data.frame函数,变量名被切断(即见的输出names(db)从下面的代码。

我目前通过使用data.table函数组合变量来避免这种情况。

我的问题是:

为什么data.frame命令会切断我的变量名? 这可能是一个非常简单的问题,可以通过使用迎刃而解as.data.frame上功能data.table对象将其转换回data.frame ,但我很好奇,为什么变量名如果我只使用data.frame函数,请首先切断。 我尝试使用R和Google的帮助寻找对此的见解,但到目前为止没有发现成功。 我正在寻找更多答案,以帮助我更好地理解R和data.tabledata.frame工作原理(因为我是一个相对较新的R用户,最近从Stata切换到该用户)。

提前致谢!

> a <- data.frame(rnorm(100))
> b <- data.frame(rnorm(100))
> names(a) <- "thisisaveryverylongvariablename-mean()"
> names(b) <- "thisisanotherveryverylongvariablename-std()"
> db <- data.frame(a, b)
> names(db)
[1] "thisisaveryverylongvariablename.mean.."      "thisisanotherveryverylongvariablename.std.."
> names(c(a, b))
[1] "thisisaveryverylongvariablename-mean()"      "thisisanotherveryverylongvariablename-std()"
> db2 <- data.table(a, b)
> names(db2)
[1] "thisisaveryverylongvariablename-mean()"      "thisisanotherveryverylongvariablename-std()"

变量名不是截止的; 简而言之,使它们与R环境更加“兼容”。 您可以使用data.frame()check.names=FALSE参数覆盖它:

a <- data.frame(rnorm(100))
b <- data.frame(rnorm(100))
names(a) <- "thisisaveryverylongvariablename-mean()"
names(b) <- "thisisanotherveryverylongvariablename-std()"
db <- data.frame(a, b, check.names = FALSE)
names(db)
# [1] "thisisaveryverylongvariablename-mean()"      "thisisanotherveryverylongvariablename-std()"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM