我使用粘贴创建了一个角色向量,例如:
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(和网站)的新手。谢谢!
答案 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"