我有一个data.frame,其中一列是由逗号分隔的数字列表,长度可变。这是一个简单的例子:
df <- data.frame(ids=c('1','2','3'), coords=c('1,2,3', '4,4,4,4', '9,8,7,6,5'))
ids coords
1 1,2,3
2 4,4,4,4
3 9,8,7,6,5
我想创建一个新列,它是一个数字列表,它是coords列中数字的函数。例如,函数x + 10:
ids coords coordsf
1 1,2,3 11,12,13
2 4,4,4,4 14,14,14,14
3 9,8,7,6,5 19,18,17,16,15
答案 0 :(得分:1)
我们可以使用gsub
df$coordsf <- sub(',','',gsub('^|,', ',1',df$coords))
df$coordsf
#[1] "11,12,13" "14,14,14,14" "19,18,17,16,15"
或者
gsub("(,|^)(?=\\d)", "\\11", df$coords, perl=TRUE)
#[1] "11,12,13" "14,14,14,14" "19,18,17,16,15"
或者如果我们需要添加10
sapply(strsplit(as.character(df$coords), ","),
function(x) paste(as.numeric(x)+10,collapse=",") )
#[1] "11,12,13" "14,14,14,14" "19,18,17,16,15"