2016-12-05 2 views
-2

Я смущен о paste() функции в R.R: как использовать функцию paste() в r для списка arg?

Это мой г Код:

paste(cols=list("speed###","dist"), rows=list("speed")) 

Идеальный выход должен быть:

cols=list("speed###","dist"), rows=list("speed") 

Но фактический выход был:

"speed### speed" "dist speed" 

Может ли кто-нибудь помочь мне определить o ut и получить идеальный выход?

Буду признателен за любой ответ здесь!

Спасибо!

С уважением!

+2

Думаю, вам нужно 'c' вместо' paste'. Вам нужно 'c (cols = list (" speed ### "," dist "), rows = list (" speed "))' – akrun

+1

Или 'list' вместо' paste'. «Идеальный выход» следует указывать в терминах реального объекта R. –

+0

Привет, @akrun. Спасибо за ваш ответ. Я думаю, что 'c' состоит в том, чтобы отделить« скорость ### »,« dist »и« speed »в' $ col1', '$ col2' и' $ rows', но не получило точно такой же результат, как 'cols = list (" speed ### "," dist "), rows = list (" speed ")', я пропустил некоторые шаги? – Joanna

ответ

2

То, что я думаю, что происходит с вашим кодом является:

  1. Вы передаете list("speed###","dist") и list("speed") в качестве параметров cols и rows, а не в виде строк и вставка игнорирует имена параметров. Кроме того, списки преобразуются в символы: c("speed###","dist"), c("speed")
  2. Поскольку параметры не имеют одинаковую длину, второй реплицируется (т.е. c("speed###","dist") и c("speed", "speed")).
  3. Затем первые элементы склеиваются, и вторые элементы, а также, возвращая вектор с каждой вставленной строкой: c("speed### speed", "dist speed")

Зачем вам то, что вы просите? Я имею в виду, вы планируете do.call(matrix, list(cols=c("speed###","dist"), rows=c("speed"))) или что-то в этом роде?

Кроме того, вы должны использовать c вместо списка. Я не понимаю необходимость использования list здесь.

+1

Это приводит к действительной точке. OP может ошибочно думать, что R 'list' похож на списки Python, которые на самом деле больше похожи на векторы. –

+0

Большое вам спасибо! Я понял! – Joanna