在R中使字符向量成为数字向量?

时间:2015-06-10 02:05:28

标签: r vector

我使用粘贴创建了一个角色向量,例如:

y <- paste("a=1,b=2,c=3")  

如果我尝试将其合并:

x <- c(y)  

我明白了:

[1] "a=1,b=2,c=3"  

我想像我一样:

c(a=1,b=2,c=3)  

给出:

a b c   
1 2 3

很抱歉,如果这太基础了,我是R(和网站)的新手。谢谢!

3 个答案:

答案 0 :(得分:2)

不清楚你想要什么,但有一个选择:

sepstr<-function(list,sep=",")unlist(strsplit(list, sep, fixed = TRUE))

d=sapply(sepstr(y),sepstr, sep="=")
x=as.numeric(d[2,])
names(x)=d[1,]
x

或者@thelatemail建议:

x2=setNames(as.numeric(d[2,]),d[1,])
x2

答案 1 :(得分:0)

y <- c("a=1,b=2,c=3")

list <- lapply(strsplit(y , ","), function(x){
  strsplit(x , "=")
})

rapply(list, function(x){
  setNames(x[2] , x[1])
})

# a   b   c 
#"1" "2" "3" 

答案 2 :(得分:0)

我想知道这是否是你真正想要的,但既然你问过,这就是。这不是一种好的做法,但也许你有一个使它有用的用例。

> eval( parse(text=paste("c(", y, ")" ) ) )
a b c 
1 2 3 

Nader的回答者暗示了对构造R字符变量的误解。 paste函数对于构建y似乎完全是多余的:只是这样做是相同的:

y <- "a=1,b=2,c=3"