r - r中数据框的名称

标签 r dataframe names

这听起来可能微不足道,但我在查找数据框的列名(有 1 列)时遇到了问题

> a <- data.frame(x = c(1,2,3,4,5), y = c("a", "a","c","d","r"))
> a
  x y
1 1 a
2 2 a
3 3 c
4 4 d
5 5 r
> colnames(a)
[1] "x" "y"
> names(a)
[1] "x" "y"
> a1 <- a[,1]
> class(a1)
[1] "numeric"
> a1
[1] 1 2 3 4 5
> a1 <- as.data.frame(a[,1])
> a1
  a[, 1]
1      1
2      2
3      3
4      4
5      5
> colnames(a1)
[1] "a[, 1]"
> names(a1)
[1] "a[, 1]"
> 

我从数据框“a”中选择 1 列,当我查询 a1 的列名时,我希望输出为“x”。感谢对此的帮助。谢谢

最佳答案

# Data
a <- data.frame(x = c(1,2,3,4,5), y = c("a", "a","c","d","r"), z = 1:5)

class(a)
#[1] "data.frame"

# Subset a
a1 <- a[,1]

class(a1)
is.vector(a1)
is.data.frame(a1)

这是一个名为 a1(不是 x)的数字向量。查看 ?"[" 中的 drop 参数:默认值为 drop =TRUE。由于只有一列,a[,1] 被强制转换为数值向量,列名丢失。当您随后将向量传递给 data.frame 时,列将采用传递给它的向量的名称(如果它已命名),因此

names(data.frame(a1))
# [1] "a1"

因此在子集化时使用 drop = FALSE 以避免减少 - a1 将是一个单列数据帧

(a1 <- a[,1, drop = FALSE])
#  x
#1 1
#2 2
#...

关于r - r中数据框的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23156832/

相关文章:

r - ggplot 中没有显示刻度线

python - 将 Pandas 数据帧读入 R

python - 将置换矩阵应用于 pandas DataFrame

r - 矩阵和表名/dimnames

r - 将xlsx文件读入R的快速方法

R/googlesheets4 非交互式 session

R:如何在使用变量时避免显式命名

python - pandas groupby 转置 str 列

python - 在 python 中迭代变量名?

php - MySQL/PHP;仅从数据库中获取没有行的属性字段