R-字符串

字符串

文本数据存储在字符向量中(或字符数组中,虽然这比较少见)
字符向量中的每个元素都是字符串,在R中,“字符串”是个常用的非正式术语,因为正式的“字符向量元素”读起来相当拗口

文本的基本单位是字符向量,这意味着大部分字符串处理函数也能用于字符串向量,这与数学运算的向量化方式相同

1. 创建和打印字符串

字符向量可用c函数创建,可以用单引号或双引号把字符串引用出来,只要引号之间匹配即可,不过使用双引号更为标准

c(
	"You should use double quotes most of the time",
	'Single quotes are better for including " inside the string'
)

paste函数能将不同字符串组合起来,在它传入的参数向量中,每个元素都能自我循环以达到最长的矢量长度,然后字符串就被拼接在一起,中间以空格分开
参数sep可以更改分隔符
paste0函数无分隔符
collapse参数把结果收缩成一个包含所有元素的字符串

paste(c("red", "yellow"), "lorry")
## [1] "red lorry" "yellow lorry"
paste(c("red", "yellow"), "lorry", sep = "-")
## [1] "red-lorry" "yellow-lorry"
paste(c("red", "yellow"), "lorry", collapse = ", ")
## [1] "red lorry, yellow lorry"
paste0(c("red", "yellow"), "lorry")
## [1] "reslorry" "yellowlorry"

toString函数是paste的变种,在打印向量时非常有用,使用逗号和空格分隔每个元素,且可限制打印的数量,width参数将限制输出字符数

cat函数是一个低级函数,工作原理类似于paste,不过格式功能更少,将很少直接调用它,它是大部分print函数的基础,cat可接受一个file参数,将输出写入文件

cat(c("red", "yellow"), "lorry")
## [1] "red yellow lorry"

一般情况下,当字符串打印到控制台时,它们会以双引号括起来
noquote函数 去掉这些引号,可以使文本更具可读性

格式化数字

formatC可使用C语言的格式化风格来指定使用固定型或科学型的格式、小数的位数以及输出的宽度
输入都为numeric类型(包括数组),且输出为character字符向量或数组
参数 digits width format flag

更通用的C风格的格式化函数sprintf,第一个参数包含字符串或数字变量的占位符,其它参数将逐个代入这些占位符
R中大部分的数值是浮点值而非整数
%s 另一个字符串
%f 固定型格式浮点数
%e 科学型格式浮点数
%d 整数
和paste函数类似,较短长度的输入将循环自身以匹配最长的输入

sprintf("%s %d = %f", "Euler's constant to the power", pow, powers_of_e)

此外,还有formatprettyNum两个函数
format提供的格式化字符串的语法稍有不同,和formatC的用法基本相似
prettyNum非常适合于格式化那些非常大或非常小的数字

特殊字符

有一些特殊的字符可以被包含在字符串中
\t 制表符
\n 换行符
\r 将光标移动到当前行的开始并覆盖所写的内容
\0 空字符,终止字符串,然而,显式地将它们包含在字符串中是错误地
\ 打印反斜杠
" 打印双引号
如果在被引用的字符串中使用单引号,或在被单引号引用的字符串中使用双引号,则不需要对其进行转义
\a 打印报警符 当想要在一个耗时很长的分析任务结束后主动通知时 alarm()

更改大小写

toupper
tolower

截取字符串

substring
substr
这两个函数,大多数情况下可以任选,当传入了不同长度的向量参数,它们的行为会略有不同
substring输出的长度和最长的输入一样
substr 输出的长度只和第一个输入的相等

分割字符串

strsplit 返回一个列表(而非字符向量或矩阵)
fixed = T意味着split的参数是固定长度的字符串而非正则表达式

strsplit(woodchuck, " ", fixed=T)

文件路径

R有一个工作目录,默认为文件被读写的地方,可以使用getwd查看其位置
setwd改变工作目录

getwd()
## [1] "d:/workspace/LearningR"

setwd("c:/windows")
getwd()

## [1] "c:/windows"

每个路径的目录部分由正斜杠分割
双反斜杠也可以
file.path从各个目录中创建文件路径,它会自动地在目录名称之间插入正斜杠,就像一个更加简单快速的为处理路径而定制的paste函数

file.path("c:", "Program Files", "R". "R-devel")
## [1] "c:/Program Files/R/R-devels"
R.home() # 同样也是R的安装目录
## [1] "c:/Program Files/R/R-devels"

path.expand能将相对路径转换为绝对路径
basename 只返回文件名,而不包括前面的目录位置
dirname 只返回文件的目录

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 统计不同字符个数可以通过使用字典来实现。具体步骤如下: 1. 定义一个空字典,用于存储每个字符出现的次数。 2. 遍历字符串中的每个字符,如果该字符已经在字典中出现过,则将该字符对应的值加1;否则,在字典中添加该字符,并将其对应的值初始化为1。 3. 最后,遍历字典,统计不同字符的个数。 示例代码如下: ```python s = "hello, world!" d = {} for c in s: if c in d: d[c] += 1 else: d[c] = 1 count = len(d) print("不同字符个数为:", count) ``` 输出结果为: ``` 不同字符个数为: 10 ``` 其中,字典d的内容为: ``` {'h': 1, 'e': 1, 'l': 3, 'o': 2, ',': 1, ' ': 1, 'w': 1, 'r': 1, 'd': 1, '!': 1} ``` ### 回答2: 在程序设计中,有时需要统计一个字符串中不同字符的个数。Python中的字符串是不可改变的序列,可以通过遍历字符串的每个字符,利用集合的特性来统计不同字符个数。以下是一个简单的例子: ```python s = 'abcaabc' count = len(set(s)) print(count) ``` 解释:首先定义一个字符串`'abcaabc'`,然后通过`set`函数将字符串中的字符去重,得到一个只包含不同字符的集合,最后利用`len`函数统计集合中元素的个数,即不同字符的个数。运行结果为`3`,即字符串`'abcaabc'`中不同字符的个数。 另外,如果想要统计字符串中每个字符出现的次数,可以使用Python内置的`collections`模块中的`Counter`函数,代码如下: ```python from collections import Counter s = 'abcaabc' count = Counter(s) print(count) ``` 解释:首先导入`collections`模块中的`Counter`函数,然后定义字符串`'abcaabc'`,接着调用`Counter`函数统计字符串中每个字符出现的次数,最后将结果打印出来。运行结果为`Counter({'a': 3, 'b': 2, 'c': 2})`,即字符串`'abcaabc'`中每个字符出现的次数分别为`a:3`、`b:2`、`c:2`。 总之,Python中统计字符串中不同字符的个数可以使用`set`函数,统计每个字符出现次数可以使用`collections`模块中的`Counter`函数,这些函数都可以帮助我们更方便地对字符串进行处理和分析。 ### 回答3: 在计算机编程或数据处理中,经常需要统计字符串中不同字符的个数。Python中有多种方法可以实现这个目标,下面将对其中几种方法进行介绍。 方法一:利用集合(set)的特性 集合是Python中的一种数据类型,它的特点是不允许有重复元素,所以我们可以将字符串中的字符逐一添加到集合中,并统计集合的长度即可。具体代码如下: ``` string = "hello world" char_set = set(string) count = len(char_set) print(count) ``` 输出结果为9,说明"hello world"中共有9种不同的字符。 方法二:利用字典(dictionary)的特性 字典是Python中的另一种数据类型,它类似于一个关联数组,可以存储一对“键-值”映射关系。我们可以将字符串中的字符作为“键”,将出现的次数作为“值”,逐一添加到字典中,最后输出字典中“键”的数量即可。具体代码如下: ``` string = "hello world" char_dict = {} for char in string: if char in char_dict: char_dict[char] += 1 else: char_dict[char] = 1 count = len(char_dict) print(count) ``` 输出结果同样为9。 方法三:利用collections模块中的Counter类 Python的collections模块中有一个Counter类,可以用来统计字符串中每个字符出现的次数。具体做法是先将字符串转换成列表,然后将列表传入Counter类的构造函数中即可,最后输出Counter类中元素的数量即可。具体代码如下: ``` from collections import Counter string = "hello world" char_list = list(string) char_counter = Counter(char_list) count = len(char_counter) print(count) ``` 输出结果同样为9。 总之,以上这几种方法都可以用来统计字符串中不同字符的个数,具体的选择取决于具体的需求和使用场景。其中,方法一使用起来比较简单,但可能会占用较多的内存;方法二使用起来稍微麻烦一些,但可以方便地统计每个字符出现的次数;方法三则可以很方便地使用collections模块中的其它功能,如most_common()方法来查找出现次数最多的字符等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值