Regex 让Sappy拥有字符串元素
我希望R以特定格式打印Regex 让Sappy拥有字符串元素,regex,r,Regex,R,我希望R以特定格式打印a中的所有元素(到给定的文本文件中)。我用的是: library(stringr) a <- c("aa", "bb", "cc") b <- sapply(a, function(x) cat(str_c("* ", x, "\n"))) 类似地,例如typeof(b[1])是“list”,但我希望它是一个字符串。我真的不明白这里发生了什么。是什么让R加上这个,我能做些什么来避免它 非常感谢 您可以使用paste0然后使用cat和sep参数。这样就不需
a
中的所有元素(到给定的文本文件中)。我用的是:
library(stringr)
a <- c("aa", "bb", "cc")
b <- sapply(a, function(x) cat(str_c("* ", x, "\n")))
类似地,例如typeof(b[1])
是“list”,但我希望它是一个字符串。我真的不明白这里发生了什么。是什么让R加上这个,我能做些什么来避免它
非常感谢 您可以使用
paste0
然后使用cat
和sep
参数。这样就不需要sapply
> a <- c("aa", "bb", "cc")
> b <- paste0("* ", a)
> cat(b, sep = "\n")
# * aa
# * bb
# * cc
>AB类(b,sep=“\n”)
#*机管局
#*bb
#*抄送
cat
、str_c
和sapply
的组合就是您得到一个列表的原因cat
首先打印,这就是为什么列表开头有*aa\n*bb\n*cc
。这里有一个使用正则表达式的替代方法
new <- gsub("([[:alpha:]]{2})", "*\\1", a)
> cat(new, sep = "\n")
新类别(新,sep=“\n”)
表达式查找一行中包含两个字母的捕获组,并用星号和空格代替
然后,用新的行分隔符调用cat。我想到的第一件事实际上是
sprintf
:
cat(sprintf("* %s", a), sep = "\n")
然而,这个问题并不完全清楚。在某种程度上,您似乎希望能够存储此结果,并在以后以这种方式使用它。在这种情况下,您可能需要考虑定义自己的<代码>打印< /代码>类,这不是太难做。 例如,这里有一个非常基本的
print
函数,用于class
“myClass”的对象:
它也将与基本的列表一起工作:
bL <- split(a, a)
class(bL) <- c(class(bL), "myClass")
bL
# * aa
# * bb
# * cc
正如你所料:
typeof(bL[[1]])
# [1] "character"
为了好玩,还可以试试
## unclass(bL)
## unclass(b)
## print.myClass(a)
你想要的确切结果是什么cat
不用于打印到文件(通常)。它用于打印到标准输出。另外,请在您的帖子中提及library(stringr)
,以便人们知道您正在使用它。嗨,Richard,我想要的结果是,它应该只打印*aa\n*bb\n*cc,而不打印$aa NULL内容。
bL <- split(a, a)
class(bL) <- c(class(bL), "myClass")
bL
# * aa
# * bb
# * cc
print.default(bL)
# $aa
# [1] "aa"
#
# $bb
# [1] "bb"
#
# $cc
# [1] "cc"
#
# attr(,"class")
# [1] "list" "myClass"
typeof(bL[[1]])
# [1] "character"
## unclass(bL)
## unclass(b)
## print.myClass(a)