使用这样的简单字符串:
a <- "l_Gf43qCW2r&auty=in_out"
我只能保留第一部分:
b <- strsplit(a, "&auty=")[[1]][1]
我想对数据框中的整个列进行相同的操作。我试过这个:
n = 1
for (i in 1:nrow(df)) {
c <- strsplit(df$col1[n], "&auty=")[[1]][1]
n = n + 1
}
但是我收到了这个错误:
Error in strsplit(df$col1[n], "&auty=") : non-character argument
数据帧有没有不同的方式来制作它?
答案 0 :(得分:2)
试试这个:
unlist(lapply(strsplit(as.character(df$col1), "&auty="), '[[', 1))
在数据框strsplit
的整个列col1
上应用df
将为您提供一个列表,其中每个元素都包含拆分的第一部分和第二部分。通过这样做,您可以提取每个列表元素的第一部分,unlist
将以向量的形式提供结果。
as.character(df$col1)
可能会修复您的错误。
答案 1 :(得分:0)
也许这个:
sapply(df$col1,function(x) gsub("&auty=.*","",x))
答案 2 :(得分:0)
一种选择是使用sub
sub("&auty.*", "", a)
#[1] "l_Gf43qCW2r"