为什么使用 `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
命令会截断我的变量名?这可能是一个非常简单的问题,可以通过在 data.table
对象上使用 as.data.frame
函数将其转换回 data.frame
轻松解决,但我很好奇为什么如果我只使用 data.frame
函数,变量名首先被截断。我曾尝试使用 R 和 Google 中的帮助寻找对此的深入了解,但到目前为止没有成功。我正在寻求更多答案,以帮助我更好地理解 R、data.table
和 data.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 环境下变得更多 "compatible"。您可以使用 check.names=FALSE
参数覆盖它 data.frame()
:
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()"
我注意到,如果我尝试使用 data.frame
函数将两个不同的 data.frame
对象组合成一个更大的 data.frame
,变量名称会被截断(即见输出names(db)
来自下面的代码。
我目前通过使用 data.table
函数组合变量来避免这种情况。
我的问题是:
为什么 data.frame
命令会截断我的变量名?这可能是一个非常简单的问题,可以通过在 data.table
对象上使用 as.data.frame
函数将其转换回 data.frame
轻松解决,但我很好奇为什么如果我只使用 data.frame
函数,变量名首先被截断。我曾尝试使用 R 和 Google 中的帮助寻找对此的深入了解,但到目前为止没有成功。我正在寻求更多答案,以帮助我更好地理解 R、data.table
和 data.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 环境下变得更多 "compatible"。您可以使用 check.names=FALSE
参数覆盖它 data.frame()
:
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()"