将一列列表强制转换为 R 数据框中的字符串
Coercing a column of lists into a string in an R data frame
创建示例数据:
id <- c(12, 32, 42, 42, 52, 52, 67, 67)
relationship_id <- c(15,1,59,1,61,6,59,1)
sample.data <- data.frame(id,relationship_id)
对于出现不止一次的每个 ID,连接 relationship_id:
combo <- aggregate(relationship_id ~ id, data = sample.data, paste, sep=",")
table(combo$relationship_id)
Error in table(combo$relationship_id) :
all arguments must have the same length
我找出导致此错误的原因:
class(combo$relationship_id)
[1] "list"
但是当我尝试将列表向量强制转换为字符向量时:
combo["relationship_id"] <- lapply(combo["relationship_id"], as.character)
> head(combo)
id relationship_id
1 12 15
2 32 1
3 42 c("59", "1")
4 52 c("61", "6")
5 67 c("59", "1")
它包括串联语法...我知道我可以解析输出以便它可用,但为什么会这样?有没有更简单的方法来清理输出?
您正在尝试解决错误的问题。如果您真的想将这些值折叠成一个字符向量,您应该使用 collapse = ","
而不是 sep
。
combo <- aggregate(relationship_id ~ id, data = sample.data,
paste, collapse=",")
table(combo$relationship_id)
#
# 1 15 59,1 61,6
# 1 1 2 1
创建示例数据:
id <- c(12, 32, 42, 42, 52, 52, 67, 67)
relationship_id <- c(15,1,59,1,61,6,59,1)
sample.data <- data.frame(id,relationship_id)
对于出现不止一次的每个 ID,连接 relationship_id:
combo <- aggregate(relationship_id ~ id, data = sample.data, paste, sep=",")
table(combo$relationship_id)
Error in table(combo$relationship_id) :
all arguments must have the same length
我找出导致此错误的原因:
class(combo$relationship_id)
[1] "list"
但是当我尝试将列表向量强制转换为字符向量时:
combo["relationship_id"] <- lapply(combo["relationship_id"], as.character)
> head(combo)
id relationship_id
1 12 15
2 32 1
3 42 c("59", "1")
4 52 c("61", "6")
5 67 c("59", "1")
它包括串联语法...我知道我可以解析输出以便它可用,但为什么会这样?有没有更简单的方法来清理输出?
您正在尝试解决错误的问题。如果您真的想将这些值折叠成一个字符向量,您应该使用 collapse = ","
而不是 sep
。
combo <- aggregate(relationship_id ~ id, data = sample.data,
paste, collapse=",")
table(combo$relationship_id)
#
# 1 15 59,1 61,6
# 1 1 2 1