Я уверен, что этот вопрос является дубликатом, но я не могу найти правильное решение. У меня есть большой вложенный список, который на самом деле является списком выходных данных класса 'dist' из lapply dist (). Теперь я хочу извлечь последнюю строку из каждого списка (поскольку меня заботило только расстояние между последними строками моих исходных списков и всеми другими строками в этом же вложенном списке. Я мог бы преобразовать это в матрицу, но это не действительно помог мне.
Из нескольких связанных постов Извлечение, а затем row.bind data.frames из вложенных списков и R - извлечение информации из списка списков data.frames и других, которые я получил ближе.
Я могу извлечь первый элемент (соответствующий первым столбцам) из каждого вложенного списка, используя это, но я хочу строки:
sapply(df,'[[',1)
Это что-то делает, но не уверен, что именно честно:
lapply(df, function(x) lapply(x, '[' , drop = FALSE))
Мой первоначальный ввод в dist () был следующим. У меня есть вложенный список из 1000 списков, которые имеют координаты x, y, z (есть много строк, вот пример):
[[1]]
x y z
-5.924184e-02 -0.0101882607 0.0017658100
-8.884432e-02 0.0454085919 -0.1072237461
1.495407e-02 0.0592509097 -0.0107400982<br>
[[2]]
5.211102e-02 -0.0141554617 -0.0176815372
-2.861500e-02 -0.1155798724 0.0561973096
2.230498e-03 -0.0264566373 -0.0501298532
Затем я использовал эту функцию для создания 1000 дистанционных матриц:
lapply(orig.df[1:1000],dist) -> df
Вот верхний вывод из str (df)
str(df)
List of 1000
$ :Class 'dist' atomic [1:2628] 0.126 0.102 0.136 0.104 0.139 ...
.. ..- attr(*, "Size")= int 73
.. ..- attr(*, "Labels")= chr [1:73] "2" "8" "10" "14" ...
.. ..- attr(*, "Diag")= logi FALSE
.. ..- attr(*, "Upper")= logi FALSE
.. ..- attr(*, "method")= chr "euclidean"
.. ..- attr(*, "call")= language FUN(x = X[[i]])
В основном я хочу сделать следующее:
df[1:1000][nrow(df),]
Для всех 1000 вложенных списков (матрицы расстояний) возьмите последнюю «строку» и все «столбцы». Это матрица расстояний класса dist. Кажется, достаточно просто, но мне трудно. Спасибо за помощь.