r markdown не может сохранить структуру строк при печати списка или data.frame - PullRequest
0 голосов
/ 15 мая 2018

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

В частности, у меня есть фрейм данных с двумя столбцами, и я хочу напечатать столбец на основе условия, определенного в функции ifelse.

Структура данных:

A tibble: 5 x 2
  `open_pre_What do you think are the positive points o… `open_pre_What do you think are the negative points of this cour…
  <chr>                                                  <chr>                                                            
1 Very sympathetic and good instructors, very motivated. It was too short and therefore could not unfold it's entirely po…
2 The instructor and TA both were really enthusiastic t… The contents were really compact and intensive - sometimes too m…
3 Provided interesting tools.                            Since the course provided interesting and useful tools, the time…
4 Very interactive and inspiring instructor and accommo… The time is too limited so that we had to be in a rush to cover …
5 I learnt a lot and got confident that I can do comput… The pace of the exercises on the PC was too fast and hard to fol…

Воспроизводимые данные

structure(list(`open_pre_What do you think are the positive points of this course?` = c("Very sympathetic and good instructors, very motivated.", 
"The instructor and TA both were really enthusiastic to accomplish the goal of the module without making any stragglers.", 
"Provided interesting tools.", "Very interactive and inspiring instructor and accommodating TA", 
"I learnt a lot and got confident that I can do computer simulations and modelling."
), `open_pre_What do you think are the negative points of this course, and if applicable, what improvements would you suggest?` = c("It was too short and therefore could not unfold it's entirely potential.", 
"The contents were really compact and intensive - sometimes too much. This course is undoubtedly recommended but it should have more time.", 
"Since the course provided interesting and useful tools, the time was too short to further dig into the details. I.e. a longer course might be helpful.", 
"The time is too limited so that we had to be in a rush to cover everything. More time is a must for next", 
"The pace of the exercises on the PC was too fast and hard to follow. Timing of the classes could also have been better."
)), .Names = c("open_pre_What do you think are the positive points of this course?", 
"open_pre_What do you think are the negative points of this course, and if applicable, what improvements would you suggest?"
), row.names = c(NA, -5L), class = c("tbl_df", "tbl", "data.frame"
))

функция ifelse возвращает строку «без комментариев», если список пуст, в противном случае возвращает первые столбцы фрейма данных.

  positive_comments = ifelse(identical(my_data[[1]], character(0))==TRUE,"No Comments",(my_data[1]))
    print(positive_comments[[1]])

Выход:

[1] Very sympathetic and good instructors, very motivated.
[2] The instructor and TA both were really enthusiastic to accomplish the goal of the module without making any stragglers. [3] Provided interesting tools.
[4] Very interactive and inspiring instructor and accommodating TA
[5] I learnt a lot and got confident that I can do computer simulations and modelling.

Насколько я понял, это потому, что команда print () вставляет разрыв строки только при необходимости, а по некоторым причинам, в данном случае, нет. Обратите внимание, что выполнение команды непосредственно из консоли возвращает желаемый результат

Затем я попытался преобразовать список во фрейм данных, но результаты остались прежними.

   positive_comments = ifelse(identical(my_data[[1]], character(0))==TRUE,"No Comments",(my_data[1]))
    positive_comments = as.data.frame(positive)
    colnames(positive_comments) <- ""
    print(positive_comments)


print(positive_comments)

1 Очень отзывчивые и хорошие инструкторы, очень мотивированные. 2 Преподаватель и ТА оба были полны энтузиазма для достижения цели модуля без каких-либо отставаний. 3 Предоставлены интересные инструменты. 4 Очень интерактивный и вдохновляющий инструктор и учтивый ТА 5 Я многому научился и убедился, что могу заниматься компьютерным моделированием и моделированием.

print(positive_comments[1])

1 Очень отзывчивые и хорошие инструкторы, очень мотивированные. 2 Преподаватель и ТА оба были полны энтузиазма для достижения цели модуля без каких-либо отставаний. 3 Предоставлены интересные инструменты. 4 Очень интерактивный и вдохновляющий инструктор и любезный ТА 5 Я многому научился и убедился, что могу заниматься компьютерным моделированием и моделированием.

print(positive_comments[[1]]) 

[1] Очень отзывчивые и хорошие преподаватели, очень мотивированные. [2] Инструктор и ТА оба были полны энтузиазма в достижении цели модуля без каких-либо отставаний. [3] Предоставлены интересные инструменты. [4] Очень интерактивный и вдохновляющий инструктор и любезный ТА [5] Я многому научился и убедился, что могу заниматься компьютерным моделированием и моделированием.

Наконец, я попытался удалить параметр results=“asis” в блоке кода уценки, но он все еще не возвращает желаемый результат. В этом случае команде печати разрешено пересекать границу уценки, что приводит к нечитаемому выводу. Использование print.data.frame (или другого метода печати) не не решает проблему.

Желаемый выход:

[1] Очень отзывчивые и хорошие инструкторы, очень мотивированные.

[2] Инструктор и ТА оба были полны энтузиазма для достижения цели модуля без каких-либо отставших.

[3] Предоставлены интересные инструменты.

[4] Очень интерактивный и вдохновляющий инструктор и любезный ТА

[5] Я многому научился и убедился, что могу заниматься компьютерным моделированием и моделированием.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...