如何替换数据框中每列中的所有列表值

时间:2017-12-06 06:38:05

标签: r

如果我有一个数据框,其中包含如下所示的列:

{{1}}

我希望将具有列表值的所有列替换为列表的长度。我尝试使用一些应用函数,但无法使其工作。

1 个答案:

答案 0 :(得分:0)

你可以这样做

a1 <- c("Hello", "World")
b1 <- c("[1, 2]", "[1,2,3]")
c1 <- c("[1, 2, 3, 3]", "[1, 4, 5, 6]")
d1 <- c("[]", "[1]")
data <- data.frame(a1, b1, c1, d1, stringsAsFactors = F)

data <- data.frame(apply(data,2,function(x) gsub(pattern = "\\[", "", x)), stringsAsFactors = F)
data <- data.frame(apply(data,2,function(x) gsub(pattern = "\\]", "", x)), stringsAsFactors = F)

data$b1 <- unlist(lapply(strsplit(data$b1, ","), length))
data$c1 <- unlist(lapply(strsplit(data$c1, ","), length))
data$d1 <- unlist(lapply(strsplit(data$d1, ","), length))

data

     a1 b1 c1 d1
1 Hello  2  4  0
2 World  3  4  1