R 中的 Message() - 使用输出作为消息输入传递
Message() in R - using output to be passed as message inpuut
我正在写 if 语句,它检查是否重复。如果有任何我想继续执行,但是 return 一条消息指示哪些是重复的。我尝试了 message()
,但不确定如何包含 locations
.
的值
if(anyDuplicated(regionGroups$location) > 0){
duplicateRegions <- regionGroups[, 'count' := .N, by = location][count > 1, .SD[1], by = location][[1]]
message("Location is not unique in the table regionGroups. There are length(duplicateRegions) duplicated locations, namely: duplicateRegions[1],duplicateRegions[2] ")
regionGroups <- regionGroups[!duplicated(regionGroups$location)]
}
(anyDuplicated(regionGroups$location) > 0)
[1] TRUE
duplicateRegions
[1] 55100 26080
期望的输出是:
Location is not unique in the table regionGroups. There are 2 duplicated locations, namely: 55100, 26080
复杂的是可能有更多的重复区域并且数字会改变。
问题:如何编写 message()
语句以便输出将列出 duplicateRegions
的相应值?
嗨,这对你有用吗?我有点不确定如果您仍然要执行,为什么需要 if
语句,因为似乎不需要 else
元素,也许您为了简单起见而忽略了它。
另一点需要注意的是 duplicated
不会选择重复集中的第一个重复项,因此当您使用时:
regionGroups[!duplicated(regionGroups$location),]
它总是会消除除第一个重复项以外的所有重复项。这对你来说可能没问题,但只是作为一个警告。
此外,如果您采用这种方法:namely: duplicateRegions[1],duplicateRegions[2]
在消息函数中,您假设您知道您将拥有多少重复项,但事实并非如此。您可以使用 paste(as.character(regionGroups$location[dups]), collapse = ", "))
折叠字符串,这样您就不必担心了。
if(any(duplicated(regionGroups$location))){
dups <- which(duplicated(regionGroups$location))
dup_regions <- regionGroups$location[dups]
message(" Location is not unique in the table regionGroups. There are ",
length(dups)," duplicated locations, namely: ", paste(as.character(regionGroups$location[dups]), collapse = ", "))
regionGroups <- regionGroups[!duplicated(regionGroups$location),]
}
我正在写 if 语句,它检查是否重复。如果有任何我想继续执行,但是 return 一条消息指示哪些是重复的。我尝试了 message()
,但不确定如何包含 locations
.
if(anyDuplicated(regionGroups$location) > 0){
duplicateRegions <- regionGroups[, 'count' := .N, by = location][count > 1, .SD[1], by = location][[1]]
message("Location is not unique in the table regionGroups. There are length(duplicateRegions) duplicated locations, namely: duplicateRegions[1],duplicateRegions[2] ")
regionGroups <- regionGroups[!duplicated(regionGroups$location)]
}
(anyDuplicated(regionGroups$location) > 0)
[1] TRUE
duplicateRegions
[1] 55100 26080
期望的输出是:
Location is not unique in the table regionGroups. There are 2 duplicated locations, namely: 55100, 26080
复杂的是可能有更多的重复区域并且数字会改变。
问题:如何编写 message()
语句以便输出将列出 duplicateRegions
的相应值?
嗨,这对你有用吗?我有点不确定如果您仍然要执行,为什么需要 if
语句,因为似乎不需要 else
元素,也许您为了简单起见而忽略了它。
另一点需要注意的是 duplicated
不会选择重复集中的第一个重复项,因此当您使用时:
regionGroups[!duplicated(regionGroups$location),]
它总是会消除除第一个重复项以外的所有重复项。这对你来说可能没问题,但只是作为一个警告。
此外,如果您采用这种方法:namely: duplicateRegions[1],duplicateRegions[2]
在消息函数中,您假设您知道您将拥有多少重复项,但事实并非如此。您可以使用 paste(as.character(regionGroups$location[dups]), collapse = ", "))
折叠字符串,这样您就不必担心了。
if(any(duplicated(regionGroups$location))){
dups <- which(duplicated(regionGroups$location))
dup_regions <- regionGroups$location[dups]
message(" Location is not unique in the table regionGroups. There are ",
length(dups)," duplicated locations, namely: ", paste(as.character(regionGroups$location[dups]), collapse = ", "))
regionGroups <- regionGroups[!duplicated(regionGroups$location),]
}