为列表中的每个项目修剪字符后的文本-R
我试图删除前面的文本,并为列表中的每个元素包含一个字符(“-”) 前- 期望输出:为列表中的每个项目修剪字符后的文本-R,r,R,我试图删除前面的文本,并为列表中的每个元素包含一个字符(“-”) 前- 期望输出: "b" "c" "d" "b" "f" 我尝试过使用lappy和gsub的各种组合,例如 lapply(x,gsub,'.*-','',x) 但这只是返回一个空列表- [[1]] [1] "" [[2]] [1] "" 并且只使用 gsub(".*-","",x) 返回 "d\")" "f\")" 这可以通过for循环完成 val<-list() for(i in 1:length(x
"b" "c" "d"
"b" "f"
我尝试过使用lappy
和gsub
的各种组合,例如
lapply(x,gsub,'.*-','',x)
但这只是返回一个空列表-
[[1]]
[1] ""
[[2]]
[1] ""
并且只使用
gsub(".*-","",x)
返回
"d\")" "f\")"
这可以通过for循环完成
val<-list()
for(i in 1:length(x)){
val[[i]]<-gsub('.*-',"",x[[i]])}
val
[[1]]
[1] "b" "c" "d"
[[2]]
[1] "b" "f"
val很接近,但是使用lappy
和gsub
时,R不知道哪个参数是哪个参数。您只需要显式地标记参数
x <- list(c("a-b","b-c","c-d"),c("a-b","e-f"))
lapply(x, gsub, pattern = "^.*-", replacement = "")
(+1)可能将模式更改为^.*-
(或^\\w-
)以仅替换前导(单个)字符,这可能会更安全一些。
x <- list(c("a-b","b-c","c-d"),c("a-b","e-f"))
lapply(x, gsub, pattern = "^.*-", replacement = "")
[[1]]
[1] "b" "c" "d"
[[2]]
[1] "b" "f"