Не в состоянии определить правильную альтернативу из объективного вопроса - PullRequest
0 голосов
/ 31 января 2019

Мой вопрос связан с R. У меня есть фрагмент кода, связанный с 5 вариантами ответа.Когда я запускаю этот вариант ответа, каждый вариант, кроме одного, получает ошибку.Правильный ответ также не соответствует вопросу.

Мой вопрос:

   A  B  C  D  E
1  7  4 23 68 15
2 12 53 14 10 20
3 39 88 98 50 84
4 18 38 33 47 72
5 31  6 51 38 27
6 20 15 68 99 50

Этот кадр данных приведен.Чтобы создать этот фрейм данных, я пишу следующий кодовый блок.

A = c(7,12,39,18,31,20)
B = c(4,53,88,38,6,15)
C = c(23,14,98,33,51,68)
D = c(68,10,50,47,38,99)
E = c(15,20,84,72,27,50)
df_x = data.frame(A,B,C,D,E)

Вопрос: Какой из следующих R-кодов будет фреймом данных заката df_x, возвращая последние три строки?

Мой выбор ответа:

  1. df_x[nrow(df_x)-2:nrow(df_x)]

  2. df_x[(nrow(df_x)-2):nrow(df_x)]

  3. df_x[nrow(df-x)-2:,]

  4. df_x[-3:]

  5. df_x[(nrow(df_x)-2):nrow(df_x)

Из них только 1-й выбор df_x [nrow (df_x) -2: nrow (df_x)] некоторый вывод.

Вывод:

  D  C  B  A
1 68 23  4  7
2 10 14 53 12
3 50 98 88 39
4 47 33 38 18
5 38 51  6 31
6 99 68 15 20

Я думаю, что это не правильно.Все остальные варианты дают ошибку.Кто-нибудь может сказать мне, какой из них является правильным выбором?Или какой фактический запрос, чтобы ответить на следующий вопрос?Я новичок в R. Поэтому мне трудно найти правильный.

Ответы [ 3 ]

0 голосов
/ 31 января 2019

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

В R, когда вы задаете подмножество базы данных, вам нужно указать номера строк и номера столбцов.

Например, df[row,col] даст вам данные, которые являются данной строкой и данным столбцом.df[row,] выберет все столбцы для данного номера строки.

Если вы не ставите запятую (,) в индексе, вы выбираете только столбцы.Например, df[1:2] собирается выбрать первый и второй столбцы

Если вы хотите выбрать несколько строк или несколько столбцов, вы также можете ввести числа, например, df[1:3,3:9]

КогдаВы используете -, R удаляет данную строку или столбец.Так, например, df[-1,] удаляет первый ряд.df[,-3] удаляет третий столбец.df[-1:-5,] удаляет первые пять строк.

Все эти ответы содержат ошибки, поскольку у них нет запятых в нужных местах.Если вы хотите выбрать до последней строки или столбца в R, вам нужно указать номер последней строки или столбца.Вы получаете этот номер, используя nrow(df) или ncol(df).Использование : - это способ работы с Python.

Ближайший ответ здесь: df_x[(nrow(df_x)-2):nrow(df_x)], но вам нужно добавить запятую: df_x[(nrow(df_x)-2):nrow(df_x),]

0 голосов
/ 31 января 2019

Проблема, которую вы ожидаете распознать (но не узнаете), это приоритет оператора.Оператор двоеточия (для секвенирования) имеет более высокий приоритет, чем двоичный оператор минус, поэтому выражение: nrow (df_x) -2: nrow (df_x) дает вам векторную разницу, возможно, с повторным использованием значения nrow (df_x) ивектор 2: nrow (df_x).Таким образом, опция номер 2, которая изолирует nrow(df_x)-2 от оператора двоеточия с круглыми скобками, даст вам правильный индекс.Добавление скобок, чтобы сделать термины очевидными, является хорошей практикой программирования.См .:

?Syntax

Другая проблема заключается в том, что после этих выражений пропущена запятая ... Я думаю, что текст вашего курса должен был дать вариант 2 как

 df_x[(nrow(df_x)-2):nrow(df_x),]
0 голосов
/ 31 января 2019

df_x [(nrow (df_x) -2): nrow (df_x),]

Имейте в виду, что условным обозначением является df [строки, столбцы].И вам нужно указать оба аргумента, поэтому я ставлю запятую после аргумента строки в решении

Cheers, Joe

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