Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.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
在特征向量的不同位置上第一次和第二次出现delimter时stru分裂_R_Regex_Stringr - Fatal编程技术网

在特征向量的不同位置上第一次和第二次出现delimter时stru分裂

在特征向量的不同位置上第一次和第二次出现delimter时stru分裂,r,regex,stringr,R,Regex,Stringr,我有一个字符列表,上面有天气变量,后面是平均值,其中是一个介于5和10之间的数字。我想将列表子集为只包含天气变量名称本身。平均天气变量如下所示: > mean_vars [1] "dew_mean_10" "dew_mean_5" "dew_mean_6" "dew_mean_7" [5] "dew_mean_8" "dew_mean_9" "humid_mean_10" "humi

我有一个字符列表,上面有天气变量,后面是平均值,其中是一个介于5和10之间的数字。我想将列表子集为只包含天气变量名称本身。平均天气变量如下所示:

> mean_vars
 [1] "dew_mean_10"        "dew_mean_5"         "dew_mean_6"         "dew_mean_7"        
 [5] "dew_mean_8"         "dew_mean_9"         "humid_mean_10"      "humid_mean_5"      
 [9] "humid_mean_6"       "humid_mean_7"       "humid_mean_8"       "humid_mean_9"      
[13] "rain_mean_10"       "rain_mean_5"        "rain_mean_6"        "rain_mean_7"       
[17] "rain_mean_8"        "rain_mean_9"        "soil_moist_mean_10" "soil_moist_mean_5" 
[21] "soil_moist_mean_6"  "soil_moist_mean_7"  "soil_moist_mean_8"  "soil_moist_mean_9" 
[25] "soil_temp_mean_10"  "soil_temp_mean_5"   "soil_temp_mean_6"   "soil_temp_mean_7"  
[29] "soil_temp_mean_8"   "soil_temp_mean_9"   "solar_mean_10"      "solar_mean_5"      
[33] "solar_mean_6"       "solar_mean_7"       "solar_mean_8"       "solar_mean_9"      
[37] "temp_mean_10"       "temp_mean_5"        "temp_mean_6"        "temp_mean_7"       
[41] "temp_mean_8"        "temp_mean_9"        "wind_dir_mean_10"   "wind_dir_mean_5"   
[45] "wind_dir_mean_6"    "wind_dir_mean_7"    "wind_dir_mean_8"    "wind_dir_mean_9"   
[49] "wind_gust_mean_10"  "wind_gust_mean_5"   "wind_gust_mean_6"   "wind_gust_mean_7"  
[53] "wind_gust_mean_8"   "wind_gust_mean_9"   "wind_spd_mean_10"   "wind_spd_mean_5"   
[57] "wind_spd_mean_6"    "wind_spd_mean_7"    "wind_spd_mean_8"    "wind_spd_mean_9"
这就是我最后想要的:

> var_names                                                                                           
       "dew"      "humid"       "rain"      "solar"       "temp" "soil_moist"  "soil_temp"    "wind_dir"  "wind_gust"   "wind_spd" 
现在我知道了怎么做了,但是由于缺乏正则表达式的能力,我的方法是无关的。我还将不得不重复我的过程20次,用其他单词替换平均值

var_names <- unique(str_split_fixed(mean_vars, "_", n = 3)[c(1:18,31:42),1])
var_names <- unlist(c(var_names, unique(unite(as_tibble(str_split_fixed(mean_vars, "_", n = 3)[c(19:30,43:60), 1:2])))))
我一直试图尽可能地保持在tidyverse软件包的范围内,所以我使用了stringr::str_split_fixed

如果您有一个使用相同函数的解决方案,这将是理想的,因为我可以继续使用相同的编程风格,但我愿意接受所有建议

谢谢。

使用sub和unique。这较短且没有包依赖关系,或者使用uniquestr_replacemean_vars,_mean.*,与stringr:

unique(sub("_mean.*", "", mean_vars))
给予:

 [1] "dew"        "humid"      "rain"       "soil_moist" "soil_temp" 
 [6] "solar"      "temp"       "wind_dir"   "wind_gust"  "wind_spd"  
如果出于某种原因,您确实想使用str_split,那么:

笔记 尽管我得到了一些不同的输出,但还是尝试一下。
rmMean <- function(x) paste(head(x, -2), collapse = "_")
unique(sapply(str_split(mean_vars, "_"), rmMean))
mean_vars <- c("dew_mean_10", "dew_mean_5", "dew_mean_6", "dew_mean_7", "dew_mean_8", 
"dew_mean_9", "humid_mean_10", "humid_mean_5", "humid_mean_6", 
"humid_mean_7", "humid_mean_8", "humid_mean_9", "rain_mean_10", 
"rain_mean_5", "rain_mean_6", "rain_mean_7", "rain_mean_8", "rain_mean_9", 
"soil_moist_mean_10", "soil_moist_mean_5", "soil_moist_mean_6", 
"soil_moist_mean_7", "soil_moist_mean_8", "soil_moist_mean_9", 
"soil_temp_mean_10", "soil_temp_mean_5", "soil_temp_mean_6", 
"soil_temp_mean_7", "soil_temp_mean_8", "soil_temp_mean_9", "solar_mean_10", 
"solar_mean_5", "solar_mean_6", "solar_mean_7", "solar_mean_8", 
"solar_mean_9", "temp_mean_10", "temp_mean_5", "temp_mean_6", 
"temp_mean_7", "temp_mean_8", "temp_mean_9", "wind_dir_mean_10", 
"wind_dir_mean_5", "wind_dir_mean_6", "wind_dir_mean_7", "wind_dir_mean_8", 
"wind_dir_mean_9", "wind_gust_mean_10", "wind_gust_mean_5", "wind_gust_mean_6", 
"wind_gust_mean_7", "wind_gust_mean_8", "wind_gust_mean_9", "wind_spd_mean_10", 
"wind_spd_mean_5", "wind_spd_mean_6", "wind_spd_mean_7", "wind_spd_mean_8", 
"wind_spd_mean_9")