#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)