这是一个方便的问题,比什么都重要。我经常手动添加引号和逗号,以便为其他函数生成一个c()列表。有没有一种既快速又聪明的方法来添加它们,而不涉及复杂的查找/替换或多次操作?如果我有多个项目,用空格或制表符分隔,或者每行一个项目,我想执行以下操作:
a、b、c、d
或
一个
B
C
D
至:
temp <- c("A", "B", "C", "D")
我可以手动添加它们,对空格",“执行查找/替换,然后添加第一个/最后一个,但这很烦人。有没有更快的方法?
发布于 2019-03-05 04:13:05
scan
函数是所有read.*
函数的基础,但它也用于执行您想要执行的任务。几年前,我们添加了一个text
参数,这样您就不再需要用“裸字符串”包装textConnection
了。可以与任何分隔符一起使用,默认的空格分隔符将处理yopu请求处理的内容:
TEMP <- scan(text="A B C D", what="")
#-------------------
Read 4 items
> TEMP
[1] "A" "B" "C" "D"
> dput(TEMP)
c("A", "B", "C", "D")
如果需要对可能是数字的内容保留前导零,则在使用formatC
或sprintf
打印它们时,需要将它们作为文本导入或在前导零之前添加
发布于 2019-03-05 03:30:30
下面是基本R字符串函数和stringr
函数的选项。在这两种情况下,想法都是在每个空白处拆分文本,然后用单引号('
)替换单词边界。这样做的原因是为了区别于字符串的开头和结尾的双引号("
),即字符串中有引号。您应该能够通过转义双引号(\\"
)来做同样的事情,但是我发现当我尝试这样做时,我很少正确地匹配它们,所以我没有测试它。然后通过逗号(也可以是逗号后跟空格)将字符串向量折叠在一起。
使用基本函数:
library(dplyr)
library(stringr)
txt <- "A B C D"
split_txt <- strsplit(txt, split = "\\s")[[1]]
quoted <- gsub("\\b", "'", split_txt)
paste(quoted, collapse = ",")
#> [1] "'A','B','C','D'"
或者是tidyverse的:
txt %>%
str_split("\\s") %>%
`[[`(1) %>%
str_replace_all("\\b", "'") %>%
str_flatten(collapse = ",")
#> [1] "'A','B','C','D'"
发布于 2019-03-05 05:40:52
尽管这有点棘手,但您可以在RStudio中创建和使用多个游标。
可以通过多种方式创建多个游标:
按Ctrl + Alt +{向上/向下}在按下的方向上创建新光标。
按Ctrl + Alt + Shift + { direction }向指定方向移动第二个光标。
使用Alt并使用鼠标拖动来创建矩形选择,
使用Alt + Shift并单击可创建从当前光标位置到单击位置的矩形选择。
取自here和gif,描述它的样子:
https://stackoverflow.com/questions/54989864
复制相似问题