拆分数据框的整列,仅保留第一部分

时间:2016-10-18 09:39:16

标签: r

使用这样的简单字符串:

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

数据帧有没有不同的方式来制作它?

3 个答案:

答案 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"