如何将拆分字符串应用于向量?

时间:2014-10-31 00:46:22

标签: r

我想基于::但它不适用于整个载体

str<- c("bob::jhh","jjj::dfff")
data<- as.data.frame(x)
data

data$new.col <-strsplit(as.character(b[,1]),"::")[[1]][2]
data

输出

       data new.col
1  bob::jhh     jhh
2 jjj::dfff     jhh #<<--this should be dfff not jhhh.

任何想法如何让它返回jhh dfff而不是jhh jhh?

2 个答案:

答案 0 :(得分:1)

sapply可以在这里使用:

str<- c("bob::jhh","jjj::dfff")
ss = strsplit(str, split="::")
sapply(ss, function(x) x[2])
[1] "jhh"  "dfff"

可以放在数据框中:

nn = sapply(ss, function(x) x[2])
dataf$new = nn
dataf
        str  new
1  bob::jhh  jhh
2 jjj::dfff dfff

答案 1 :(得分:0)

strsplit返回一个列表,因此您需要处理该列表。例如

str <- c("bob::jhh","jjj::dfff", "another::string", "foo::bar")
dat <- do.call(rbind, strsplit(str, split="::"))

这会创建一个矩阵,第一列是::左侧的所有内容,第二列是::右侧的所有内容