如果我有一个数据框,其中包含如下所示的列:
{{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