首页 > 解决方案 > 创建数据时,它没有名称

问题描述

dataset=structure(list(goods = structure(1:6, .Label = c("a", "b", "c", 
"d", "e", "f"), class = "factor")), .Names = "goods", class = "data.frame", row.names = c(NA, 
-6L))

  goods
1     a
2     b
3     c
4     d
5     e
6     f

我想创建新数据,很简单

df1=dataset$goods

但在它之后df1没有名称列商品。为什么?

str(df1)
 Factor w/ 6 levels "a","b","c","d",..: 1 2 3 4 5 6

如您所见,它没有名称goods 如何使df1数据具有名称列商品?

如果这篇文章是重复的,请告诉我,我删除它。

标签: rdataframe

解决方案


您正在分配一个列向量,而不是一个数据框。要分配整个数据框,只需执行

df = dataset

如果您只想保留一些列而不是全部,请使用列子集文档):

df = dataset[, "goods", drop = FALSE]

drop = FALSE这里是必要的,因为数据帧子集运算符将返回一个向量而不是具有单列的数据帧(这可以说是一个错误,这就是为什么 tidyverse 小标题的行为不同)。

使用 tidyverse 操作(又名“现代”R 方式),这将被写为

library(dplyr)
df = select(dataset, goods)

推荐阅读