Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从r中的输出中提取特定的数据帧?_R_Extract - Fatal编程技术网

如何从r中的输出中提取特定的数据帧?

如何从r中的输出中提取特定的数据帧?,r,extract,R,Extract,我的输出如下所示 在我的输出中有一些类似的集群。如您所见,共有两列(第1天和第2天)。我想为每天提取(或导出)以Hour\u 1开头的数据帧 所以对于集群1,我想有两个数据帧,一个从0.00,0,0…开始,一直持续到Hour\u 24,另一个从1.07,0,0…开始,一直持续到Hour\u 24 这是我的数据结构 v1<-structure(list(`Cluster 1` = structure(list(Day = c(1, 2), Season = c(1, 1), Y

我的输出如下所示

在我的输出中有一些类似的集群。如您所见,共有两列(第1天和第2天)。我想为每天提取(或导出)以
Hour\u 1
开头的数据帧

所以对于
集群1
,我想有两个数据帧,一个从
0.00,0,0…
开始,一直持续到
Hour\u 24
,另一个从
1.07,0,0…
开始,一直持续到
Hour\u 24

这是我的数据结构

 v1<-structure(list(`Cluster 1` = structure(list(Day = c(1, 2), Season = c(1, 
    1), Year = c(2011, 2011), Daily = c(1.48, 2.53), Hour_1 = c(0, 
    1.07), Hour_2 = c(0, 0), Hour_3 = c(0, 0), Hour_4 = c(0, 0), 
        Hour_5 = c(0, 0), Hour_6 = c(0, 1.27), Hour_7 = c(0, 0.19
        ), Hour_8 = c(0, 0), Hour_9 = c(0, 0), Hour_10 = c(0, 0), 
        Hour_11 = c(0, 0), Hour_12 = c(0, 0), Hour_13 = c(0, 0), 
        Hour_14 = c(0, 0), Hour_15 = c(0, 0), Hour_16 = c(0, 0), 
        Hour_17 = c(0, 0), Hour_18 = c(0.041, 0), Hour_19 = c(0.673, 
        0), Hour_20 = c(0, 0), Hour_21 = c(0, 0), Hour_22 = c(0, 
        0), Hour_23 = c(0.319, 0), Hour_24 = c(0.447, 0)), .Names = c("Day", 
    "Season", "Year", "Daily", "Hour_1", "Hour_2", "Hour_3", "Hour_4", 
    "Hour_5", "Hour_6", "Hour_7", "Hour_8", "Hour_9", "Hour_10", 
    "Hour_11", "Hour_12", "Hour_13", "Hour_14", "Hour_15", "Hour_16", 
    "Hour_17", "Hour_18", "Hour_19", "Hour_20", "Hour_21", "Hour_22", 
    "Hour_23", "Hour_24"), row.names = c("Day_1", "Day_2"), class = "data.frame"), 
        `Cluster 2` = structure(list(Day = c(7, 8), Season = c(1, 
        1), Year = c(2011, 2011), Daily = c(0.19, 0.75), Hour_1 = c(0, 
        0), Hour_2 = c(0, 0.521), Hour_3 = c(0, 0.229), Hour_4 = c(0, 
        0), Hour_5 = c(0, 0), Hour_6 = c(0, 0), Hour_7 = c(0, 0), 
            Hour_8 = c(0, 0), Hour_9 = c(0, 0), Hour_10 = c(0, 0), 
            Hour_11 = c(0, 0), Hour_12 = c(0, 0), Hour_13 = c(0, 
            0), Hour_14 = c(0, 0), Hour_15 = c(0, 0), Hour_16 = c(0, 
            0), Hour_17 = c(0.189, 0), Hour_18 = c(0.001, 0), Hour_19 = c(0, 
            0), Hour_20 = c(0, 0), Hour_21 = c(0, 0), Hour_22 = c(0, 
            0), Hour_23 = c(0, 0), Hour_24 = c(0, 0)), .Names = c("Day", 
        "Season", "Year", "Daily", "Hour_1", "Hour_2", "Hour_3", 
        "Hour_4", "Hour_5", "Hour_6", "Hour_7", "Hour_8", "Hour_9", 
        "Hour_10", "Hour_11", "Hour_12", "Hour_13", "Hour_14", "Hour_15", 
        "Hour_16", "Hour_17", "Hour_18", "Hour_19", "Hour_20", "Hour_21", 
        "Hour_22", "Hour_23", "Hour_24"), row.names = c("Day_3", 
        "Day_4"), class = "data.frame")), .Names = c("Cluster 1", 
    "Cluster 2"))

v1您可以将以“Hour”开头的所有列收集在一起

lapply(v1, function(x) x[grep('Hour', names(x))])

#$`Cluster 1`
#      Hour_1 Hour_2 Hour_3 Hour_4 Hour_5 Hour_6 Hour_7 Hour_8...
#Day_1   0.00      0      0      0      0   0.00   0.00      0...
#Day_2   1.07      0      0      0      0   1.27   0.19      0...

#$`Cluster 2`
#      Hour_1 Hour_2 Hour_3 Hour_4 Hour_5 Hour_6 Hour_7 Hour_8...
#Day_3      0  0.000  0.000      0      0      0      0      0...
#Day_4      0  0.521  0.229      0      0      0      0      0...
如果您想每天单独使用,可以使用
asplit

lapply(v1, function(x) asplit(x[grep('Hour', names(x))], 1))

您可以将以“Hour”开头的所有列聚集在一起

lapply(v1, function(x) x[grep('Hour', names(x))])

#$`Cluster 1`
#      Hour_1 Hour_2 Hour_3 Hour_4 Hour_5 Hour_6 Hour_7 Hour_8...
#Day_1   0.00      0      0      0      0   0.00   0.00      0...
#Day_2   1.07      0      0      0      0   1.27   0.19      0...

#$`Cluster 2`
#      Hour_1 Hour_2 Hour_3 Hour_4 Hour_5 Hour_6 Hour_7 Hour_8...
#Day_3      0  0.000  0.000      0      0      0      0      0...
#Day_4      0  0.521  0.229      0      0      0      0      0...
如果您想每天单独使用,可以使用
asplit

lapply(v1, function(x) asplit(x[grep('Hour', names(x))], 1))

带有
tidyverse

library(purrr)
library(dplyr)
map(v1, ~ .x %>%
             select(contains('Hour')))
#$`Cluster 1`
#      Hour_1 Hour_2 Hour_3 Hour_4 Hour_5 Hour_6 Hour_7 Hour_8 Hour_9 Hour_10 #Hour_11 Hour_12 Hour_13
#Day_1   0.00      0      0      0      0   0.00   0.00      0      0       0       0       0       0
#Day_2   1.07      0      0      0      0   1.27   0.19      0      0       0       0       0       0
#      Hour_14 Hour_15 Hour_16 Hour_17 Hour_18 Hour_19 Hour_20 Hour_21 Hour_22 #Hour_23 Hour_24
#Day_1       0       0       0       0   0.041   0.673       0       0       0   0.319   0.447
#Day_2       0       0       0       0   0.000   0.000       0       0       0   0.000   0.000

#$`Cluster 2`
#      Hour_1 Hour_2 Hour_3 Hour_4 Hour_5 Hour_6 Hour_7 Hour_8 Hour_9 Hour_10 #Hour_11 Hour_12 Hour_13
#Day_3      0  0.000  0.000      0      0      0      0      0      0       0       0       0       0
#Day_4      0  0.521  0.229      0      0      0      0      0      0       0       0       0       0
#      Hour_14 Hour_15 Hour_16 Hour_17 Hour_18 Hour_19 Hour_20 Hour_21 Hour_22 #Hour_23 Hour_24
#Day_3       0       0       0   0.189   0.001       0       0       0       0       0       0
#Day_4       0       0       0   0.000   0.000       0       0       0       0       0       0

带有
tidyverse

library(purrr)
library(dplyr)
map(v1, ~ .x %>%
             select(contains('Hour')))
#$`Cluster 1`
#      Hour_1 Hour_2 Hour_3 Hour_4 Hour_5 Hour_6 Hour_7 Hour_8 Hour_9 Hour_10 #Hour_11 Hour_12 Hour_13
#Day_1   0.00      0      0      0      0   0.00   0.00      0      0       0       0       0       0
#Day_2   1.07      0      0      0      0   1.27   0.19      0      0       0       0       0       0
#      Hour_14 Hour_15 Hour_16 Hour_17 Hour_18 Hour_19 Hour_20 Hour_21 Hour_22 #Hour_23 Hour_24
#Day_1       0       0       0       0   0.041   0.673       0       0       0   0.319   0.447
#Day_2       0       0       0       0   0.000   0.000       0       0       0   0.000   0.000

#$`Cluster 2`
#      Hour_1 Hour_2 Hour_3 Hour_4 Hour_5 Hour_6 Hour_7 Hour_8 Hour_9 Hour_10 #Hour_11 Hour_12 Hour_13
#Day_3      0  0.000  0.000      0      0      0      0      0      0       0       0       0       0
#Day_4      0  0.521  0.229      0      0      0      0      0      0       0       0       0       0
#      Hour_14 Hour_15 Hour_16 Hour_17 Hour_18 Hour_19 Hour_20 Hour_21 Hour_22 #Hour_23 Hour_24
#Day_3       0       0       0   0.189   0.001       0       0       0       0       0       0
#Day_4       0       0       0   0.000   0.000       0       0       0       0       0       0

我希望每天都单独使用,但我需要使用R3.3.0。此版本不存在asplit函数。我还可以使用什么替代方法?@HüsamettinTayşI您可以使用
split
<代码>lappy(v1,函数(x)拆分(x[grep('Hour',name(x))],1:nrow(x))
我想每天单独使用,但我需要使用R3.3.0。此版本不存在asplit函数。我还可以使用什么替代方法?@HüsamettinTayşI您可以使用
split
<代码>lappy(v1,函数(x)拆分(x[grep('Hour',name(x))],1:nrow(x)))