我试图在"."上分割一个字符串.并使用"."之前和之后的两个字符串创建其他列.
tes<-c("1.abc","2.di","3.lik")
dat<-c(5,3,2)
h<-data.frame(tes,dat)
h$num<-substr(h$tes,1,1)
h$prim<-unlist(strsplit(as.character(h$tes),"\\."))[2]
h$prim<-sapply(h$tes,unlist(strsplit(as.character(h$tes),"\\."))[2])
Run Code Online (Sandbox Code Playgroud)
我想h$prim
包含"abc","di","lik"..但是我无法弄明白.我猜strsplit
不是矢量化,但后来我认为该sapply
版本应该有效.但是我认为应该很容易:-)
问候,// M
rcs*_*rcs 30
这应该可以解决问题
R> sapply(strsplit(as.character(h$tes), "\\."), "[[", 2)
[1] "abc" "di" "lik"
Run Code Online (Sandbox Code Playgroud)
随着stringr
包裹,它更容易:
library(stringr)
str_split_fixed(h$tes, fixed("."), 2)[, 2]
Run Code Online (Sandbox Code Playgroud)
这与rcs的答案相同,但可能更容易理解:
> sapply(strsplit(as.character(h$tes), "\\."), function(x) x[[2]])
[1] "abc" "di" "lik"
Run Code Online (Sandbox Code Playgroud)
这个问题在StackOverflow上出现过好几次.
以您的确切形式:
strsplit
本主题中的一些类似问题:
如果你关心速度,那么你应该考虑从John回答有关fixed
参数的提示strsplit
.