почему функция R as.character автоматически генерирует разрыв строки (\ n) при применении к списку? - PullRequest
0 голосов
/ 01 апреля 2020

ОБНОВЛЕНИЯ: Оказывается, что as.character имеет "мягкое ограничение" из 500 символов при принудительной длинной строке (список).


Привет всем:

У меня длинный список строк местоположения, заданного в R, который:

a=c("CANADA", "UNITED.STATES", "VIETNAM", "TAIWAN", "RUSSIAN.FEDERATION", "SENEGAL", "SOUTH.AFRICA", "MALAWI", "SLOVENIA", "BELGIUM", "ISRAEL", "HONG.KONG", "FRANCE", "PHILIPPINES", "MYANMAR", "GERMANY", "UKRAINE", "CENTRAL.AFRICAN.REPUBLIC", "COTE.D.IVOIRE", "JAPAN", "ZAMBIA", "SOUTH.KOREA", "DEM.REP.OF.CONGO", "SPAIN", "SWEDEN", "BOTSWANA", "AUSTRALIA", "CHINA", "MALAYSIA", "PAKISTAN", "ITALY", "CAMEROON", "BRAZIL", "CUBA", "DENMARK", "UGANDA", "THAILAND", "CYPRUS", "GHANA", "TANZANIA", "KENYA","MONGOLIA", "INDIA")

Но когда я пытаюсь преобразовать «список (а)» в одну строку, используйте as.character (чтобы сохранить его целиком ), команда выглядит так:

as.character(list(a))

Затем между местоположением «Кения» и «Монголия» автоматически создается "\n", вывод должен выглядеть следующим образом:

[1] "list(c(\"CANADA\", \"UNITED.STATES\", \"VIETNAM\", \"TAIWAN\", \"RUSSIAN.FEDERATION\", \"SENEGAL\", \"SOUTH.AFRICA\", \"MALAWI\", \"SLOVENIA\", \"BELGIUM\", \"ISRAEL\", \"HONG.KONG\", \"FRANCE\", \"PHILIPPINES\", \"MYANMAR\", \"GERMANY\", \"UKRAINE\", \"CENTRAL.AFRICAN.REPUBLIC\", \"COTE.D.IVOIRE\", \"JAPAN\", \"ZAMBIA\", \"SOUTH.KOREA\", \"DEM.REP.OF.CONGO\", \"SPAIN\", \"SWEDEN\", \"BOTSWANA\", \"AUSTRALIA\", \"CHINA\", \"MALAYSIA\", \"PAKISTAN\", \"ITALY\", \"CAMEROON\", \"BRAZIL\", \"CUBA\", \"DENMARK\", \"UGANDA\", \"THAILAND\", \"CYPRUS\", \"GHANA\", \"TANZANIA\", \"KENYA\", \n\"MONGOLIA\", \"INDIA\"))"

Примечание "\n" вставлен, а когда я удалил первый элемент (КАНАДА), "\n" переместился между "TANZANIA", "KENYA", так что похоже, что "\n" всегда создается перед 42-м элементом.

Однако, когда я создаю последовательный номер строки, то есть a=c("1","2"..."41","42","43"), делаю то же преобразование "as.character(list(a))",

Нет "\n" создано!

Я запутался, кто-нибудь знает почему?

1 Ответ

0 голосов
/ 01 апреля 2020

Поскольку вы вводите объект list в строку символов. Если вы хотите преобразовать в одну строку, попробуйте (как предложено @Parfait):

paste0(a, collapse = ",")

Если вы не хотите использовать строку с разделителями-запятыми, измените значение в аргументе collapse.

...