【发布时间】:2016-06-18 20:16:15
【问题描述】:
我正在尝试使用 grep 将数据框的列子集化为一行。当 grep 返回多个列时,新数据框具有来自 grep 的相应列名。当只返回一列时,列名是NULL...我正在使用这种方法,因为我正在遍历许多可能包含不同 HVAC 传感器数据组合的站点。
我正在尝试为每个单元“HVAC1”、“HVAC2”、“HVAC3”创建子集,并为所有单元共有的列创建子集。在这种情况下,只有一个列是所有单位共有的:“IAT”或室内环境温度。此外,没有第三个 HVAC 单元,因此 HVAC 3 上的 grep 正确地将 names(sensordata.h3) 返回为 character(0)。
这是我的代码。
sensordata <- data.frame(sitetime = c("2015-10-22 14:15:17"), HVAC1RT = c(70.7), HVAC1ST = c(74.75), HVAC2RT = c(66.875), HVAC2ST = c(46.4), IAT = c(72.5))
sensordata
names(sensordata)
sensordata.h1 <- sensordata[,c(grep("HVAC1",names(sensordata)))]
sensordata.h1
names(sensordata.h1)
sensordata.h2 <- sensordata[,c(grep("HVAC2",names(sensordata)))]
sensordata.h2
names(sensordata.h2)
sensordata.h3 <- sensordata[,c(grep("HVAC3",names(sensordata)))]
sensordata.h3
names(sensordata.h3)
sensordata.common <- sensordata[,c(grep("IAT|OAT|IAH",names(sensordata)))]
sensordata.common
names(sensordata.common)
【问题讨论】:
-
您能否突出您的编码问题,即您面临的实际问题?
-
确实,您可能错过了这个问题。
-
当 grep 在创建名为 sensordata.common 的子集时仅返回一列时,对 names(sensordata.common) 的调用返回 NULL
-
尝试
drop=F作为子集的一个选项。 -
谢谢!成功了!