Подтвердить что ты не робот

В чем разница между фреймворком данных и списком в R?

В чем разница между файловым фреймом и списком в R? Какой из них следует использовать, когда? Что проще перебрать?

Точная проблема: Я должен сначала сохранить 3 строковых элемента типа "a", "b", "c". Позже для каждого из них мне нужно добавить еще 3 элемента; например, для "a" я должен добавить "a1", "a2", "a3". Позже я должен использовать вложенные для циклов для доступа к этим элементам.

Итак, я смущен, чтобы использовать dataframe или список или какой-либо другой тип данных, в котором я мог сначала сохранить и затем добавить (вид каждого столбца)?

В настоящее время я получаю ошибки, например "количество элементов для замены не кратно длины замены"

4b9b3361

Ответ 1

Вопрос не такой глупый, как считают некоторые люди. Я знаю много людей, борющихся с этой разницей, и что использовать где. Подводя итог:

Списки на сегодняшний день являются наиболее гибкой структурой данных в R. Их можно рассматривать как совокупность элементов без каких-либо ограничений на класс, длину или структуру каждого элемента. Единственное, что вам нужно позаботиться, это то, что вы не даете двум элементам одинаковое имя. Это может вызвать много путаницы, и R не дает ошибок для этого:

> X <- list(a=1,b=2,a=3)
> X$a
[1] 1

Кадры данных также являются списками, но у них есть несколько ограничений:

  • вы не можете использовать одно и то же имя для двух разных переменных
  • все элементы кадра данных являются векторами
  • все элементы кадра данных имеют равную длину.

Из-за этих ограничений и результирующей двумерной структуры, кадры данных могут имитировать некоторые из свойств матриц. Вы можете выбирать строки и выполнять операции над строками. Вы не можете сделать это со списками, так как строка undefined есть.

Все это означает, что вы должны использовать фрейм данных для любого набора данных, который вписывается в эту двухмерную структуру. По сути, вы используете кадры данных для любого набора данных, где столбец совпадает с переменной, а строка совпадает с одним наблюдением в широком смысле слова. Для всех других структур списки - это путь.

Обратите внимание, что если вы хотите вложенную структуру, вам нужно использовать списки. Поскольку элементы списка могут быть самими списками, вы можете создавать очень гибкие структурированные объекты.

Ответ 2

Посмотрите на пример: Если вы используете apply вместо sapply, чтобы получить класс -

apply(iris,2,class) #  function elements are rows or columns
Sepal.Length  Sepal.Width Petal.Length  Petal.Width      Species 
"character"  "character"  "character"  "character"  "character" 

sapply(iris,class) # function elements are variables
Sepal.Length  Sepal.Width Petal.Length  Petal.Width      Species 
"numeric"    "numeric"    "numeric"    "numeric"     "factor"