选择字符串中的最后n个字符

时间:2016-12-06 06:42:25

标签: r

我有以下数据集

df <-data.frame(fact=c("a,bo,v", "c,b,v,d", "c"))

我希望为每一行选择最后两项。所以,理想情况下我希望得到这个输出:

    fact
1    bo,v
2    v,d
3    c

我尝试拆分行,然后选择最后两项:

spl <- strsplit(as.character(df$fact), split = ",")

tail(spl[[1]], n=2)

但是不要给我正确的结果

2 个答案:

答案 0 :(得分:3)

你可以这样做:

lapply(lapply(strsplit(as.character(df$fact), split = ','), function(x) x[c(length(x)-1,length(x))]), paste, collapse = ',')

您拆分col,然后提取n和n-1索引。然后将它们粘贴在一起。

您可以通过执行以下操作来概括:

lapply(strsplit(as.character(df$fact), split = ','), function(x) x[(length(x)-n):length(x)] )

其中n不是您要采取的后退步骤。

使用tail更简单。

lapply(strsplit(as.character(df$fact), split = ','), tail, n=2)

答案 1 :(得分:1)

我们可以使用sapply基于fact循环遍历split,的所有元素,然后使用{选择最后n个元素{1}}

tail

n <- 2 sapply(as.character(df$fact), function(x) { temp = unlist(strsplit(x, ',')) tail(temp, n) }, USE.NAMES = F) #[[1]] #[1] "bo" "v" #[[2]] #[1] "v" "d" #[[3]] #[1] "c" 的更好选择我觉得使用dplyr

rowwise