Почему я должен потерять имена кодов, если я выберу только один столбец DataFrame?

Если у вас есть такая функция, как:

int foo()
{
    // more stuff
    foo();
}

Затем foo () будет продолжать называть себя, все глубже и глубже, и когда пространство, используемое для отслеживания того, какие функции вы используете, заполненный, вы получаете ошибку переполнения стека.

0
задан Bernardo 13 July 2018 в 21:06
поделиться

2 ответа

data.frame - это список, а столбцы - его элементы. Если вы извлекаете столбец и хотите сохранить его имя, вы не можете использовать $, если вам нужно получить имя столбца вместе со значениями столбца, используйте [

 df
 #   col_a col_b
 # 1     1     5
 # 2     2     2
 # 3     3     8

Если извлечение путем присвоения имени столбца ($), будут получены только значения, если извлечение по положению столбца ([), оно дает имя столбца + значения в этом столбце. Этот [ может содержать позиции элемента по числу или имени, но сохраняет имя

$

 df$col_a
 # [1] 1 2 3

[

 df[1]
 #   col_a
 # 1     1
 # 2     2
 # 3     3


Поведение списка (как было сказано выше, data.frame - это список)

 my_list <- list(a = 1:10, b = 1:3, c= 4)

Чтобы извлечь значения в элементе a

Element Name - Gives Только значения

 my_list$a
 # [1]  1  2  3  4  5  6  7  8  9 10

Чтобы извлечь значения элемента в положение 1

Позиция элемента - Дает имя элемента + значения в элементе

 my_list[1]
 # $a
 # [1]  1  2  3  4  5  6  7  8  9 10

Дополнительная помощь в консоли R типа

 ?`[`
1
ответ дан Sowmya S. Manian 17 August 2018 в 12:09
поделиться

исходный кадр данных - это список, поэтому вы можете подмножество с помощью $. Однако, чтобы сохранить характеристики dataframe при создании нового столбца (списка), вам нужно использовать drop=F

x<- df[,"col_a",drop=F]
colnames(x)
[1] "col_a"
2
ответ дан A. Suliman 17 August 2018 в 12:09
поделиться
  • 1
    Да, я получаю это @ a-suliman, но идея состоит в том, чтобы НЕ писать все это «код». просто получить векторы в функцию. Знаешь что я имею ввиду? Спасибо за супер быстрый ответ – Bernardo 13 July 2018 в 21:02
Другие вопросы по тегам:

Похожие вопросы: