将字符向量粘贴为R中的逗号分隔,不带引号的列表

时间:2016-06-28 15:33:06

标签: r

我有一个看起来像这样的字符向量

vector <- c('a','b','c','d','e')

我在for循环中有一个对象,它将输入视为:

out[a,] <- c(a,b,c,d,e)

a-e是具有值的变量(例如,a=0.7)。我想为out对象提供一些trans vector对象的transfomred版本。我试过了

paste(noquote(vector),collapse=',')

但是,这只会返回

"a,b,c,d,e"

哪个仍无用。

3 个答案:

答案 0 :(得分:3)

反转函数调用的顺序:

noquote(paste(vector, collapse = ','))

这将打印[1] a,b,c,d,e。如果您不喜欢[1]使用

cat(paste(vector, collapse = ','))

打印

a,b,c,d,e

答案 1 :(得分:3)

您可以使用mget将对象放入命名列表中:

# data
a <- 1; b <- 2; c <- 3; d <- 4; e <- 5

mget(letters[1:5])

$a
[1] 1

$b
[1] 2

$c
[1] 3

$d
[1] 4

$e
[1] 5

或将其mget包裹在unlist中以获取命名向量:

unlist(mget(letters[1:5]))
a b c d e 
1 2 3 4 5 

答案 2 :(得分:1)

这是一个非常基本的问题,每次都会让我几乎犯一个小错误。我用 R语言简化并创建了一个函数。

你在这里哥们!

numbers <- list(2,5,8,9,14,20) #List containing even odd numbers
en<-list()                     #Initiating even numbers’ list
on<-list()                     #Initiating odd numbers’ list

#Function creation

separate <- function(x){
for (i in x)
{

ifelse((i%%2)==0, en <- paste(append(en,i, length(en)+1), collapse = ","),
                  on <- paste(append(on,i, length(on)+1), collapse = ","))
}
message("Even numbers are : ", en)
message("Odd numbers are : ", on)
}

#Passing the function with argument

separate(numbers)

结果!

偶数是:2,8,14,20

奇数是:5,9