Ответ 1
Попробуйте использовать:
> paste(blah, collapse = "")
[1] "p30s4p28s4"
или если вы хотите промежуток между ними:
> paste(blah, collapse = " ")
[1] "p30s4 p28s4"
Я пытаюсь создать единую переменную, которая представляет собой конкатенацию двух символов, например, для перехода с "p30s4" "p28s4" на "p30s4 p28s4". Я пробовал кошку и вставлял, как показано ниже. Оба возвращают пустые переменные. Что я делаю неправильно?
> blah = c("p30s4","p28s4")
> blah
[1] "p30s4" "p28s4"
> foo = cat(blah)
p30s4 p28s4
> foo
NULL
> foo = paste(cat(blah))
p30s4 p28s4
> foo
character(0)
Попробуйте использовать:
> paste(blah, collapse = "")
[1] "p30s4p28s4"
или если вы хотите промежуток между ними:
> paste(blah, collapse = " ")
[1] "p30s4 p28s4"
Альтернативой аргументу 'collapse' метода paste() является использование do.call() для передачи каждого значения в векторе в качестве аргумента.
do.call(paste,as.list(blah))
Преимущество заключается в том, что этот подход обобщается на функции, отличные от "вставки".
Ответы на этот вопрос велики и намного проще, чем у меня - поэтому с тех пор я принял использование "краха".
Однако, чтобы продвинуть идею, что, когда вы сомневаетесь, вы можете написать свою собственную функцию, я представляю свое предыдущее, менее элегантное решение:
vecpaste <- function (x) {
y <- x[1]
if (length(x) > 1) {
for (i in 2:length(x)) {
history
y <- paste(y, x[i], sep = "")
}
}
#y <- paste(y, "'", sep = "")
y
}
vecpaste(blah)
вы также можете добавить кавычки и запятые или что угодно - это оригинальная версия, которую я написал:
vecpaste <- function (x) {
y <- paste("'", x[1], sep = "")
if (length(x) > 1) {
for (i in 2:length(x)) {
history
y <- paste(y, x[i], sep = "")
}
}
y <- paste(y, "'", sep = "")
y
}
Проблема с использованием cat
выше заключается в том, что cat(x)
записывает x
для вывода, а не в переменную. Если вы хотите написать строку, вы можете сделать:
capture.output(cat(blah))
который, как следует из названия, фиксирует вывод в строке, чтобы вернуть желаемый результат. Однако это не предпочтительный метод, просто объяснение с помощью альтернативного решения.