2013-12-09 5 views
2

мне нужна функция, которая будет принимать входной сигнал в виде строки символов (пробел) и распечатать следующее:Функция Изменение символов строки

"Hello BLANK World" 

т.е. мир («семь») печатает "Hello seven World"

Я очень смущен о том, как работать со строками символов в R.

ответ

5

Вы хотите функцию paste

world <- function(x) paste("Hello", x, "World") 
+0

+1: 'paste' является первой функцией, чтобы узнать, если вы не знакомы с манипуляциями со строками символов. – Hugh

5

Или ...

x <- "seven" 
sprintf("Hello %s World", x) 

Другими словами нет необходимости в world функции, вот что делает sprintf.

4

Существует учебное пособие по работе с символьными строками в R here.

R не имеет оператора «concatenate», как это делают многие другие языки. Так, например:

x <- "A" 
y <- "B" 

x + y   # Like javascript? No - does NOT produce "AB" 
# Error in x + y : non-numeric argument to binary operator 

x || y   # Like SQL? No - does NOT produce "AB" 
# Error in x || y : invalid 'x' type in 'x || y' 

x . y   # Like PHP? No - does NOT produce "AB" 
# Error: unexpected symbol in "x ." 

paste(x,y, sep="") 
# [1] "AB" 

Как говорит @Matthew, вы должны использовать paste(...) для конкатенации. Однако прочтите документацию о разделителях по умолчанию.

+4

Вы можете написать собственную функцию конкатенации строк '' + .String "<- function (e1, e2) paste0 (e1, e2); "+ .String" <- function (e1, e2) {paste0 (e1, e2)}; as.String ("hey") + as.String ("you") ' – Dason

+0

Это действительно опрятно. Интересно, почему это еще не сделано? – jlhoward

+0

Странно - это первое + .String должно быть 'as.String <- function (x) {class (x) <-" String "; x} ' – Dason

0

Используйте stringi пакета:

require(stringi) 
## Loading required package: stringi 
"a"%+%"b" 
## [1] "ab" 
Смежные вопросы