#r
Вопрос:
Мне нужно преобразовать некоторые данные из двух именованных столбцов в одном многомерном списке в один список с двумя столбцами, и данные в каждой строке в результате должны быть из соответствующей строки в исходном списке. Смотрите следующий псевдокод:
object <- data.frame()
object$Property1 <- c('a', 'b', 'c')
object$Property2 <- c(1, 2, 3)
object$Property3 <- c('X', 'Y', 'Z')
object$Property4 <- c('other', 'data', 'here')
result = matrix(NA, nrow=length(object), ncol=2)
# This is what I need help with
result$Property1 <- object$Property1
result$Property2 <- object$Property2
После выполнения приведенного выше кода result
переменная должна иметь это значение:
ряд | результат$Свойство 1 | результат$Свойство 2 |
---|---|---|
1 | 'a' |
1 |
2 | 'b' |
2 |
3 | 'c' |
3 |
result
не должно быть никаких других столбцов.
Я попробовал точный синтаксис, показанный выше, result <- list(object$Property1, object$Property2)
, и result <- c(object$Property1, object$Property2)
, но я продолжаю получать одномерный список со значениями ['a', 'b', 'c', 1, 2, 3]
. Я использую R 3.3.2 в Windows 10 версии 20H2. Заранее спасибо!
Ответ №1:
Способ создания data.frame состоит в том, чтобы создать векторы (при необходимости), а затем передать их data.frame
. В коде операции data.frame
он был создан как строка 0, столбец 0, и при добавлении столбцов с ним происходит сбой $
.
Property1 <- c('a', 'b', 'c')
Property2 <- c(1, 2, 3)
Property3 <- c('X', 'Y', 'Z')
Property4 <- c('other', 'data', 'here')
object <- data.frame(Property1, Property2, Property3, Property4)
-уптут
> object
Property1 Property2 Property3 Property4
1 a 1 X other
2 b 2 Y data
3 c 3 Z here
Ответ №2:
С данными акруна: мы также могли бы использовать tibble
: Смотрите здесь:
Property1 <- c('a', 'b', 'c')
Property2 <- c(1, 2, 3)
Property3 <- c('X', 'Y', 'Z')
Property4 <- c('other', 'data', 'here')
library(tibble)
object <- tibble(Property1, Property2, Property3, Property4)
Выход:
# A tibble: 3 x 4
Property1 Property2 Property3 Property4
<chr> <dbl> <chr> <chr>
1 a 1 X other
2 b 2 Y data
3 c 3 Z here