首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法把引号添加到带有逗号的列表中?

有没有办法把引号添加到带有逗号的列表中?
EN

Stack Overflow用户
提问于 2016-06-03 20:57:15
回答 2查看 61关注 0票数 0

我有一个来自不同来源的长长的列表,例如:

代码语言:javascript
复制
c(moses, abi, yoyoma) 

我想把它作为一个对象:

代码语言:javascript
复制
a <- c("moses", "abi", "yoyoma")

有没有办法做到这一点,而不手动添加引号到每个名称?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-03 21:24:55

快速的方法是

代码语言:javascript
复制
cc <- function(...) sapply(substitute(...()), as.character)

cc(moses, abi, yoyoma)
# [1] "moses"  "abi"    "yoyoma"

一个更灵活的解决方案可能是

代码语言:javascript
复制
cc <- function(..., simplify = TRUE, evaluate = FALSE) {
  l <- eval(substitute(alist(...)))
  ev <- if (evaluate) eval else identity
  sapply(l, function(x) if (is.symbol(x)) as.character(x) else ev(x), simplify = simplify)
}

cc(moses, abi, yoyoma)
# [1] "moses"  "abi"    "yoyoma"


cc(one, two, 'three', four = 4)
#                          four 
# "one"   "two" "three"     "4" 

cc(one, two, 'three something' = rnorm(5), four = 4, simplify = FALSE)
# [[1]]
# [1] "one"
# 
# [[2]]
# [1] "two"
# 
# $`three something`
# rnorm(5)
# 
# $four
# [1] 4

cc(one, two, 'three something' = rnorm(5), four = 4, simplify = FALSE, evaluate = TRUE)
# [[1]]
# [1] "one"
# 
# [[2]]
# [1] "two"
# 
# $`three something`
# [1] -1.1803114  0.3940908 -0.2296465 -0.2818132  1.3744525
# 
# $four
# [1] 4
票数 2
EN

Stack Overflow用户

发布于 2016-06-03 21:14:33

只需使用函数as.character()

代码语言:javascript
复制
as.character(a)
 [1] "moses"  "abi"    "yoyoma"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37623286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档