我有以下向量:

test <- c("here is some text", "here is some other text", "here is my formula", "2+2", "here is my second formula", "4+4", "here is even more text", "here is my final formula", "6+6")

我希望做的是获取一个包含"FORMULA"的字符串的每个实例,并在其前面插入一个类似"ccc"的随机字符串,这样我就会得到如下所示:

test <- c("here is some text", "here is some other text", "CCC", "here is my formula", "2+2", "CCC", "here is my second formula", "4+4", "here is even more text", "CCC", "here is my final formula", "6+6")

推荐答案

它们仅使用碱基R:

1)使用append,如下所示:

test2 <- test
ix <- rev(grep("formula", test)) - 1
for(i in ix) test2 <- append(test2, "CCC", i)
test2
##  [1] "here is some text"         "here is some other text"  
##  [3] "CCC"                       "here is my formula"       
##  [5] "2+2"                       "CCC"                      
##  [7] "here is my second formula" "4+4"                      
##  [9] "here is even more text"    "CCC"                      
## [11] "here is my final formula"  "6+6"         

这里有三个不同的俏皮话.

第一个创建一个矩阵,其第一行包含"ccc"和NA元素,第二行为test.然后它会解开这一点,并移除NA.

第二个迭代测试,如果元素中不包含公式或后跟元素的向量"ccc",则输出该元素.这将生成一个未列出的列表.

第三个代码在任何包含公式的元素前面加上"ccc\n",然后将其拆分.

# 2a
c(na.omit(c(rbind(ifelse(grepl("formula", test), "CCC", NA), test))))

# 2b
unlist(lapply(test, function(x) if (grepl("formula", x)) c("CCC", x) else x))

# 2c
scan(text = sub("(.*formula)", "CCC\n\\1", test), what="", quiet=TRUE, sep="\n")

R相关问答推荐

使用case_when和Mutate搜索多个列以寻找条件

混淆矩阵,其中每列和等于1

如何使用`ggplot2::geom_segment()`或`ggspatial::geom_spatial_segment()`来处理不在格林威治中心的sf对象?

整数成随机顺序与约束R?

如何将旋转后的NetCDF转换回正常的纬度/经度网格,并使用R?

R Read.table函数无法对制表符分隔的数据正常工作

如何指定我的函数应该查找哪个引用表?

计算数据帧中指定值之前的行数,仅基于每行之后的future 行,单位为r

为什么我使用geom_density的绘图不能到达x轴?

将标识符赋给事件序列,避免错误观察

随机森林的带Shap值的蜂群图

我们如何在R中透视数据并在之后添加计算

使用shiny 中的所选要素行下拉菜单

按组跨多列创建伪变量

需要一个函数来在第一行创建一个新变量,然后用新变量替换一个不同的变量(对于多行)

使用其他DF中的文件名将列表中的每个元素保存到文件中

通过匹配另一个表(查找表)中的列值来填充数据表,并在另一个变量上进行内插

如何创建直方图与对齐的每月箱?

删除r中每个因素级别的最后2行

如何使用ggsurvfit包更改风险表中的标签名称?