Не удается получить желаемый результат от сложной обработки столбца с именем R

#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