2013-11-03 2 views
0

У меня есть набор строк, содержащих элементы, которые я хочу преобразовать в набор данных. По сути, я хочу удалить пустое пространство и оставить столбцы данных. Самый простой способ, и, возможно, единственный способ, я знаю, это написать my.data во внешний файл, а затем прочитать этот внешний файл обратно в R. Есть ли более эффективное решение, которое не связано с написанием и чтением нового файла? Благодарим вас за любые предложения. Я предпочитаю базовую R.преобразовать строки в числовые данные, разделив пробел

my.data <- c(' abc  -1.10  1.18  -3.41  1.21 ', 
      ' def  -1.71  0.21  -2.14 1.29  ', 
      ' gg   2.19  2.93  -1.16  3.55 ', 
      ' hvv4  0.00  -0.01   0.04  0.11  ') 

my.data <- data.frame(my.data, stringsAsFactors=FALSE) 

desired.result <- read.table(text = ' 

    parm1 beta SE  lcl ucl 
    abc -1.10 1.18 -3.41 1.21 
    def -1.71 0.21 -2.14 1.29 
    gg 2.19 2.93 -1.16 3.55 
    vv4 0.00 -0.01 -0.04 0.11 

', header = TRUE, stringsAsFactors=FALSE) 

ответ

4

Почему бы просто не использовать read.table на строку вашего персонажа?

out <- read.table(text = my.data, stringsAsFactors=FALSE, 
        header = FALSE, strip.white=TRUE) 
str(out) 
# 'data.frame': 4 obs. of 5 variables: 
# $ V1: chr "abc" "def" "gg" "hvv4" 
# $ V2: num -1.1 -1.71 2.19 0 
# $ V3: num 1.18 0.21 2.93 -0.01 
# $ V4: num -3.41 -2.14 -1.16 0.04 
# $ V5: num 1.21 1.29 3.55 0.11 
1
x=t(unique(unlist(strsplit(x=my.data,split=" ")))[-1]) 
cleaned=matrix(x,5,4) 
t(cleaned) 

     [,1] [,2] [,3] [,4] 
[1,] "abc" "def" "gg" "hvv4" 
[2,] "-1.10" "-1.71" "2.19" "0.00" 
[3,] "1.18" "0.21" "2.93" "-0.01" 
[4,] "-3.41" "-2.14" "-1.16" "0.04" 
[5,] "1.21" "1.29" "3.55" "0.11" 

cleaned 

     [,1] [,2] [,3] [,4] [,5] 
[1,] "abc" "-1.10" "1.18" "-3.41" "1.21" 
[2,] "def" "-1.71" "0.21" "-2.14" "1.29" 
[3,] "gg" "2.19" "2.93" "-1.16" "3.55" 
[4,] "hvv4" "0.00" "-0.01" "0.04" "0.11" 
Смежные вопросы