Запись циклов для одновременного выполнения нескольких списков - PullRequest
0 голосов
/ 26 апреля 2019

Я пытаюсь получить эти списки:

dim_29 <- list(c(114.49337,  20.29176, 390.74801, 592.75864))
dim_30 <- list(c(112.39257,  19.24136, 388.64721, 594.85944))
dim_31 <- list(c(112.39257,  19.24136, 402.30239, 589.60745))
dim_28 <- list(c(113.44297,  19.24136, 374.99204, 587.50665)) 

Для этого:

> dim_28 <- unlist(dim_28)
> dim_28
[1] 113.44297  19.24136 374.99204 587.50665
> dim_28 <- paste(dim_28, sep = " ", collapse = ", ")
> dim_28
[1] "113.44297, 19.24136, 374.99204, 587.50665"

с помощью цикла или каким-либо другим способом автоматизации процесса со всеми списками.Какой цикл мне нужно написать, чтобы выполнить это, или я должен использовать функцию difnet?Любая помощь будет отличной, спасибо!

Ответы [ 3 ]

3 голосов
/ 26 апреля 2019

Циклы просты, если ваша структура данных правильная. У вас есть 4 последовательно названных списка. Каждый список содержит один вектор. Вместо этого у вас должен быть 1 список, содержащий 4 вектора:

dim_list = list(
  d29 = c(114.49337,  20.29176, 390.74801, 592.75864),
  d30 = c(112.39257,  19.24136, 388.64721, 594.85944),
  d31 = c(112.39257,  19.24136, 402.30239, 589.60745),
  d28 = c(113.44297,  19.24136, 374.99204, 587.50665)
)

lapply(dim_list, paste, collapse = ", ")
# $d29
# [1] "114.49337, 20.29176, 390.74801, 592.75864"
# 
# $d30
# [1] "112.39257, 19.24136, 388.64721, 594.85944"
# 
# $d31
# [1] "112.39257, 19.24136, 402.30239, 589.60745"
# 
# $d28
# [1] "113.44297, 19.24136, 374.99204, 587.50665"
0 голосов
/ 26 апреля 2019
> lapply(mget(ls(pattern = "^dim_\\d+")), function(x) paste(unlist(x), sep = " ", collapse = ", "))
$`dim_28`
[1] "113.44297, 19.24136, 374.99204, 587.50665"

$dim_29
[1] "114.49337, 20.29176, 390.74801, 592.75864"

$dim_30
[1] "112.39257, 19.24136, 388.64721, 594.85944"

$dim_31
[1] "112.39257, 19.24136, 402.30239, 589.60745"
0 голосов
/ 26 апреля 2019

Это один из способов, которым я придумал.

dim_29 <- list(c(114.49337,  20.29176, 390.74801, 592.75864))
dim_30 <- list(c(112.39257,  19.24136, 388.64721, 594.85944))
dim_31 <- list(c(112.39257,  19.24136, 402.30239, 589.60745))
dim_28 <- list(c(113.44297,  19.24136, 374.99204, 587.50665)) 

list_group = list(dim_28, dim_29, dim_30, dim_31)
output_dat = list()
for (i in 1:4){
  dat =list_group[[i]][[1]]
  output_dat[i] = paste0(dat, sep = " ", collapse = ", ")
}

Надеюсь, вы найдете это полезным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...