使用 unname 删除 data.frame 的 dimnames 不起作用

标签 r dataframe names

我试图删除 data.frame 的 rownames 和 colnames。正如杰森所说,这可以通过 unname 来完成。然后将行名设置为 NULL .我注意到手册说使用 unname带选项 force = T将在一个步骤中做同样的事情:

force logical; if true, the dimnames (names and row names) are removed even from data.frames.



但是,这对我不起作用:
d <- data.frame(a = c(x1 = 1, x2 = 2), b = c(x1 = 'a', x2 = 'b'))
unname(d, force = T)

# Error in `dimnames<-.data.frame`(`*tmp*`, value = NULL) : 
#   invalid 'dimnames' given for data frame

是什么原因?
sessionInfo()
# R version 3.3.1 (2016-06-21)
# Platform: x86_64-pc-linux-gnu (64-bit)
# Running under: Ubuntu 16.04.1 LTS
# 
# locale:
#  [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
#  [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
#  [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
#  [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
#  [9] LC_ADDRESS=C               LC_TELEPHONE=C            
# [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       
# 
# attached base packages:
# [1] stats     graphics  grDevices utils     datasets  methods   base

最佳答案

奇怪的。看起来像这里的错误(代码行为与文档不匹配)。

作为解决方法,要删除行名,您需要:

> d <- unname(d)
> rownames(d) <- NULL
> d

1 1 a
2 2 b

最左边的一列数字是 R 的标准 data.frame行编号并应用于 data.frame s 没有行名。

关于使用 unname 删除 data.frame 的 dimnames 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39950573/

相关文章:

r - Poisson draw in Rcpp 和 R 不同的结果

python - pandas向量化运算获取字符串长度

python - 如果下一行在特定列中有 NaN,则连接 Pandas 行

r - 对于命名向量和矩阵,[[ 是否在不传递 exact=FALSE 参数的情况下使用部分匹配?

r - 更改 tmap map R 中数据类别的绘制顺序

r - 如何使用r中的for循环使用先前的观察来预测下一个时期?

php - 选择时默认使用集合名称 'utf8'有什么不好的影响吗?

r - 将点中的名称更改为字符

mysql - RODBC 字符串被截断

python - 使用另一个数据框中的值作为查找表更改一个数据框中的值