R 选择字符串中的最后n个字符
我有以下数据集R 选择字符串中的最后n个字符,r,R,我有以下数据集 df <-data.frame(fact=c("a,bo,v", "c,b,v,d", "c")) 我已尝试拆分行,然后选择最后两项: spl <- strsplit(as.character(df$fact), split = ",") tail(spl[[1]], n=2) spl您可以这样做: lapply(lapply(strsplit(as.character(df$fact), split = ','), function(x) x[c(length
df <-data.frame(fact=c("a,bo,v", "c,b,v,d", "c"))
我已尝试拆分行,然后选择最后两项:
spl <- strsplit(as.character(df$fact), split = ",")
tail(spl[[1]], n=2)
spl您可以这样做:
lapply(lapply(strsplit(as.character(df$fact), split = ','), function(x) x[c(length(x)-1,length(x))]), paste, collapse = ',')
拆分列,然后提取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)
您可以这样做:
lapply(lapply(strsplit(as.character(df$fact), split = ','), function(x) x[c(length(x)-1,length(x))]), paste, collapse = ',')
拆分列,然后提取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)
我们可以使用sapply
在事实
的每个元素上循环,根据,
拆分它,然后使用尾部
选择最后的n个
元素
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"
我们可以使用sapply
在事实
的每个元素上循环,根据,
拆分它,然后使用尾部
选择最后的n个
元素
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"
strsplit()用于拆分字符串,您给它的是一个因子而不是字符串,这就是它抛出错误的原因。没错,我尝试了这个spl查看Chirayu的答案,您需要将函数strsplit()应用于df列。换句话说,你有一列字符串,现在你需要拆分每一列,apply(),lapply(),sapply()是应用函数的工具。strsplit()是用来拆分字符串的,你给它一个因子而不是字符串,这就是它抛出错误的原因。没错,我试过这个spl检查Chirayu的答案,您需要将函数strsplit()应用于df列。换句话说,您有一列字符串,现在需要拆分每个字符串,apply()、lappy()和sapply()是应用函数的工具。这是一个很好的选择。再加一个,很好的选择。加一。