R 我有一个数据帧,它的列是向量。我想获取最后一个元素并将其存储在新列中。我怎么做?

R 我有一个数据帧,它的列是向量。我想获取最后一个元素并将其存储在新列中。我怎么做?,r,dataframe,vector,indexing,R,Dataframe,Vector,Indexing,我的数据框是这样的 df> col1 col2 1 c('a', 'b', 'c') 2 c('r', 't') 3 c('x', 'y') df> col1 col2 col3 1 c('a', 'b', 'c') 'c' 2 c('r', 't') 't' 3 c('x', 'y

我的数据框是这样的

df>
    col1       col2
     1     c('a', 'b', 'c')
     2     c('r', 't')
     3     c('x', 'y')
df>
    col1       col2             col3
     1     c('a', 'b', 'c')      'c'
     2     c('r', 't')           't'
     3     c('x', 'y')           'y'
我想要的是这样的数据帧

df>
    col1       col2
     1     c('a', 'b', 'c')
     2     c('r', 't')
     3     c('x', 'y')
df>
    col1       col2             col3
     1     c('a', 'b', 'c')      'c'
     2     c('r', 't')           't'
     3     c('x', 'y')           'y'
以下是一个例子:

df <- data.frame(C = I(list(list("a","b"),list("a","b","c"))))
df$D <- sapply(df$C, function(x) x[length(x)])
试试这个

df$col3 <- sapply(df$col2,function(s) as.vector(s)[length(s)])

df$col3请使用
dput(df)
添加数据。欢迎使用SO!当你提出一个问题时,试着增加一个最低限度的内容:输入样本、预期输出样本、你尝试了什么、研究和你在哪里卡住了。你试了什么?