我想基于::但它不适用于整个载体
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?
答案 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="::"))
这会创建一个矩阵,第一列是::
左侧的所有内容,第二列是::
右侧的所有内容