Strings-通过变量创建字符串

问题

你想要通过变量创建一个字符串。

方案

两种从变量创建字符串的通用方法是使用paste()sprintf()函数。对向量来说,paste更加有用;sprintf则常用于对输出实现精确的控制。

使用paste()

a <- "apple"
b <- "banana"

# 将a,b变量内容连到一起,并用空格隔开
paste(a, b)
#> [1] "apple banana"

# 如果不想要空格,可以设定参数sep="",或使用函数 paste0():
paste(a, b, sep="")
#> [1] "applebanana"
paste0(a, b)
#> [1] "applebanana"

# 用逗号加空格分开:
paste(a, b, sep=", ")
#> [1] "apple, banana"


# 设定一个字符向量
d <- c("fig", "grapefruit", "honeydew")

# 如果输入是一个向量,输出会将其每个元素堆叠到一起:
paste(d, collapse=", ")
#> [1] "fig, grapefruit, honeydew"

# 如果输入是一个标量和一个向量, 结果会将标量与向量里每个元素放到一起
# 并返回一个向量(这是R向量化操作的循环对齐原则):
paste(a, d)
#> [1] "apple fig"        "apple grapefruit" "apple honeydew"

# 使用 sep 和 collapse参数:
paste(a, d, sep="-", collapse=", ")
#> [1] "apple-fig, apple-grapefruit, apple-honeydew"

使用sprintf()

另一种方式是使用sprintf函数,它来自于C语言。

想要在字符串或字符变量中进行取代操作,使用%s

a <- "string"
sprintf("This is where a %s goes.", a)
#> [1] "This is where a string goes."

如果是整数,可以使用%d或它的变体:

x <- 8
sprintf("Regular:%d", x)
#> [1] "Regular:8"

# 可以输出到字符串,以空格开头。
sprintf("Leading spaces:%4d", x)
#> [1] "Leading spaces:   8"

# 也可以使用0替代
sprintf("Leading zeros:%04d", x)
#> [1] "Leading zeros:0008"

对浮点数,使用%f进行标准释义,而%e活着%E则代表指数。你也可以使用%g或者%G让程序自动帮你进行两种格式的转换,这取决于你的有效位数。下面是R help页面中关于sprintf的例子:

sprintf("%f", pi)         # "3.141593"
sprintf("%.3f", pi)       # "3.142"
sprintf("%1.0f", pi)      # "3"
sprintf("%5.1f", pi)      # "  3.1"
sprintf("%05.1f", pi)     # "003.1"
sprintf("%+f", pi)        # "+3.141593"
sprintf("% f", pi)        # " 3.141593"
sprintf("%-10f", pi)      # "3.141593  "   (左对齐)
sprintf("%e", pi)         #"3.141593e+00"
sprintf("%E", pi)         # "3.141593E+00"
sprintf("%g", pi)         # "3.14159"
sprintf("%g",   1e6 * pi) # "3.14159e+06"  (指数化)
sprintf("%.9g", 1e6 * pi) # "3141592.65"   ("修正")
sprintf("%G", 1e-6 * pi)  # "3.14159E-06"

%m.nf格式规范中:m代表域宽,它是输出字符串中字符的最小位数,可以以空格或0开头。n代表精度,它指小数点后的数字位数。

其他混合操作:

x <- "string"
sprintf("Substitute in multiple strings: %s %s", x, "string2")
#> [1] "Substitute in multiple strings: string string2"

# To print a percent sign, use "%%"
sprintf("A single percent sign here %%")
#> [1] "A single percent sign here %"

注意

关于更多脚本输出的信息可以查看this page

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,406评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,732评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,711评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,380评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,432评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,301评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,145评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,008评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,443评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,649评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,795评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,501评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,119评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,731评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,865评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,899评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,724评论 2 354

推荐阅读更多精彩内容

  • 在挖掘分析的过程当中对字符串的处理是极为重要的,且出现也较为频繁,R语言作为当前最为流行的开源数据分析和可视化平台...
    果果哥哥BBQ阅读 5,819评论 0 8
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,233评论 0 4
  • 只有离开的人才有资格发告白吗?当然不是~ 坐在最初相聚的办公室,听着身边人声嘈杂,感慨时光改变你我,悲伤吗?不吧,...
    S苏苏S阅读 468评论 6 2
  • 1. 学校再过几个月就要放长假了。这时候第一想到的是约我好朋友小东一起去旅行 。可想到他都让我记起之前那些尴尬的事...
    _刘建宏_阅读 1,241评论 6 20
  • 你所承接的阳光和温度都存在于那些谓之安稳的恒定空间中,你被看护在美好之内。而再跨一步,炼狱中的人,爬在你今生也不会...
    rosmarinus阅读 509评论 2 2