给定一个数据框,我想在我的一列上使用strsplit
,并返回矢量的第一个元素。这里是例子:如何子集一个sapply函数输出
testdf<- data.frame(col1= c('string1.string2', 'string3.string4'),
col2= c('somevalue', 'someothervalue'),
stringsAsFactors = FALSE)
我要生成一个新的列如 testdf$col3 <- c('string1', 'string3')
我试过如下:
testdf$col3<- strsplit(testdf$col1, split = '\\.')[[1]])[1]
其中,当然,不能正常工作。它仅返回输出的第一个元素('string1')并将其写入整个列。 一个解决办法是写一个自定义函数:
customfx<- function(ind_cell){
my_out<- strsplit(ind_cell, split = '\\.')[[1]][1]
return(my_out)}
然后用sapply
使用它。我想知道是否有替代方案。会说话的棍子是你的:)
编辑示例以阐明所需输出 – madmaxthc
使用'testdf $ col3 < - sapply(strsplit(testdf $ col1,split ='\\。'),\'[''1)' – MrFlick
'tidyr :: separate' – HubertL