Сопряжение усеченного символа в кадре данных - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть усеченные данные chr [1:10], и каждая строка организована таким образом, и некоторые строки имеют разную длину:

    [1] "\nA   B   C   D   E"
    [2] "\n1       3   4   5"
    [3] "\nF   G   H"
    [4] "\n6   7   8"

Вот обновленная версия моего вопроса

   line.1 <- c("A   B   C   D   E")
   line.2 <- c("1       3   4   5")

   line <- rbind(line.1, line.2)

   line <- data.frame(line)

                        line
    line.1 A   B   C   D   E
    line.2 1   3   4   5

Итак, мой желаемый результат должен быть:

          V1  V2  V3  V4  V5 
   Line.1  A   B   C   D   E
   Line.2  1       3   4   5

Я не могу понять, как разбить его на разные столбцы, при этом дополнительный пробел между ними считается одним значением.

1 Ответ

0 голосов
/ 26 апреля 2018

Вот один из способов сделать это:

# Build the character vector
x <- c("\nA   B   C   D   E", "\n1       3   4   5", "\nF   G   H", "\n6   7   8")

# Remove the new line characters
x <- sub("\n", "", x)

# Select every other element of the character vector as column 1
Col1 <- paste(x[c(T, F)], collapse = '   ')
Col1 <- strsplit(Col1, '   ')[[1]]

# Do the same for column 2
Col2 <- paste(x[c(F, T)], collapse = '   ')
Col2 <- strsplit(Col2, '   ')[[1]]

# Combine them in a data frame
data.frame(Col1, Col2)
#   Col1 Col2
# 1    A    1
# 2    B     
# 3    C    3
# 4    D    4
# 5    E    5
# 6    F    6
# 7    G    7
# 8    H    8

Использование strsplit - это то, что разбивает значения на разные столбцы:

> strsplit(line.2, '   ')[[1]]
[1] "1"  ""   " 3" "4"  "5" 

Таким образом, чтобы объединить обе строки в качестве кадра данных, вы можете сделать:

data.frame(rbind(strsplit(line.1, '   ')[[1]], strsplit(line.2, '   ')[[1]]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...