数据框中的列名丢失
Loss of column names in dataframe
我正在开发一个闪亮的应用程序。用户界面的一部分涉及使用下拉菜单、复选框等选择要绘制的许多数据列中的哪一个。我将 grepl() 与用户输入一起使用,以将大型数据框缩减为最终被绘制的单个列。指定此上下文,以便您知道我无法执行 one-off 解决方法;我需要一个强大的解决方案,我可以通过用户界面应用于一千个或更多列的数据(在你骂我拥有大量数据之前,我正在做映射,所以我在 shp 文件的范围内工作) .
为了调试我的代码、生成图表标题等,保留正在绘制的列的名称很重要,但是在修剪的最后阶段,当我只剩下一列时,列名消失。
如果我这样做:
test <- data.frame(c1 = c(1,2,3), c2 = c(4,5,6))
trimmed <- test[, grepl("c1", names(test))]
这是return。
trimmed
[1] 1 2 3
好的,很好。我将强制使用数据框。试试这个:
test <- data.frame(c1 = c(1,2,3), c2 = c(4,5,6))
trimmed <- as.data.frame(test[, grepl("c1", names(test))])
这是return:
trimmed
test[, grepl("c1", names(test))]
1 1
2 2
3 3
好吧,该列似乎不再命名为 c1。
由于我将数据框缩减为较小子集的方式,我在其他地方没有该列名。换句话说,我不能只重命名最终数据框中的列,因为我事先不知道该名称是什么。
我该如何写才能保留原来的 "c1" 列名称?
使用drop = F
保留结构(不删除单值维度)
test[, grepl("c1", names(test)), drop = FALSE]
例如:
> mtcars[1:3, "mpg"]
[1] 21.0 21.0 22.8
> mtcars[1:3, "mpg", drop = F]
mpg
Mazda RX4 21.0
Mazda RX4 Wag 21.0
Datsun 710 22.8
详情见?"["
。
我正在开发一个闪亮的应用程序。用户界面的一部分涉及使用下拉菜单、复选框等选择要绘制的许多数据列中的哪一个。我将 grepl() 与用户输入一起使用,以将大型数据框缩减为最终被绘制的单个列。指定此上下文,以便您知道我无法执行 one-off 解决方法;我需要一个强大的解决方案,我可以通过用户界面应用于一千个或更多列的数据(在你骂我拥有大量数据之前,我正在做映射,所以我在 shp 文件的范围内工作) .
为了调试我的代码、生成图表标题等,保留正在绘制的列的名称很重要,但是在修剪的最后阶段,当我只剩下一列时,列名消失。
如果我这样做:
test <- data.frame(c1 = c(1,2,3), c2 = c(4,5,6))
trimmed <- test[, grepl("c1", names(test))]
这是return。
trimmed [1] 1 2 3
好的,很好。我将强制使用数据框。试试这个:
test <- data.frame(c1 = c(1,2,3), c2 = c(4,5,6))
trimmed <- as.data.frame(test[, grepl("c1", names(test))])
这是return:
trimmed test[, grepl("c1", names(test))] 1 1 2 2 3 3
好吧,该列似乎不再命名为 c1。
由于我将数据框缩减为较小子集的方式,我在其他地方没有该列名。换句话说,我不能只重命名最终数据框中的列,因为我事先不知道该名称是什么。
我该如何写才能保留原来的 "c1" 列名称?
使用drop = F
保留结构(不删除单值维度)
test[, grepl("c1", names(test)), drop = FALSE]
例如:
> mtcars[1:3, "mpg"]
[1] 21.0 21.0 22.8
> mtcars[1:3, "mpg", drop = F]
mpg
Mazda RX4 21.0
Mazda RX4 Wag 21.0
Datsun 710 22.8
详情见?"["
。