Возвращает все значения из строки без имен столбцов в R

#r #row #subset

#r #строка #подмножество

Вопрос:

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

 df <- data.frame(person, salary, haircolor, outcome)
head(df)
          person salary haircolor  outcome
1       John Doe  21000     black  married
2     Peter Gynn  23400    blonde divorced
3     Jolie Hope  26800    blonde divorced

df_row1 <- df[1, ]
print(df_row)
>df_row1
  person   salary haircolor outcome
1 John Doe 21000  black     married
  

Мне нужно создать вектор для значений первой строки (без имен столбцов). На самом деле, я собираюсь выполнить цикл по каждой строке, чтобы создать вектор для каждой строки.

Например, я ищу следующее для первой строки:

 print(df_row1_good)
>df_row1_good 
John Doe 21000  black     married
  

Ответ №1:

Если мы хотим удалить атрибуты names unlist и указать use.names = FALSE

 unlist(df[1,], use.names = FALSE)
#[1] "John Doe" "21000"    "black"    "married" 
  

для печати

 cat(unlist(df[1,], use.names = FALSE), 'n')
#John Doe 21000 black married 
  

Или unname

 unname(df[1,])
  

Комментарии:

1. unlist Функция возвращает числовые значения в моей консоли. Знаете ли вы, почему это приведет к разным результатам для вас и меня?

2. @juansalsa Разница будет в том, что если у вас есть factor столбцы. Из R 4.0 , по умолчанию, stringsAsFactors = FALSE при data.frame вызове или при чтении с read.csv/read.table помощью . Если у вас есть предыдущая версия, это будет TRUE, т.Е. Строки будут factor , и это будет приведено к числовому. Вы можете сделать unlist(type.convert(df, as.is = TRUE)[1,], use.names = FALSE)