我有一个大矩阵
> str(distMatrix)
num [1:551, 1:551] 0 6 5 Inf 5 ...
- attr(*, "dimnames")=List of 2
..$ : chr [1:551] "+" "ABRAHAM" "ACTS" "ADVANCE" ...
..$ : chr [1:551] "+" "ABRAHAM" "ACTS" "ADVANCE" ...
Run Code Online (Sandbox Code Playgroud)
其中包含数值.我需要将所有数值收集到一个长列表中(用于获取分配).目前我所拥有的:
for(i in 1:dim(distMatrix)[[1]]){
for (j in 1:1:dim(distMatrix)[[1]]){
distances[length(distances)+1] <- distMatrix[i,j]
}
}
Run Code Online (Sandbox Code Playgroud)
但是,这需要永远.有谁能建议更快的方式?
我正在尝试构造一个正则表达式来识别字符串,其中工作"pack"/"pck"/"包"/"设置"(不区分大小写),如果是(字存在),则提取此单词之前或之后的数字.例子:
"Fregon EcoClean Multipurpose Scrubber For Pots, Pans, Kitchen, and Bathroom, Green, 3-Pack" -> 3
Bathroom, Green, 3 Pack" -> 3
"Franklin Sports NHL Mini Hockey Goal Set of 2" ->2
"Make: Electronics Components Pack 2" -> 2
"Make: Electronics Components Pack of 2 -> 2
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下表达式:
sub(".*pack(\\d+).*", "\\1", "inflow100 pack6 distance12")
Run Code Online (Sandbox Code Playgroud)
但是,它不符合上述所有情况.有任何想法吗?
我对 R 比较陌生,如果这是基础知识,我很抱歉。我有这个循环,里面有一个条件,可以在 2 个列表之间进行比较,并返回一个 TRUE/FALSE 值向量。我真正需要检查的是这个向量是否只包含 TRUE 值(意味着 2 个列表是相同的)
for ( i in 1:(length(sessions_items_list)-1)){
if (sessions_items_list[[i]]==sessions_items_list[[i+1]]){
identical_sessions_df [i,1] <- names(sessions_items_list[i])
identical_sessions_df [i,2] <- names(sessions_items_list[i+1])
#identical_sessions_df [i,3] <- sessions_items_list[[i]]
#identical_sessions_df [i,4] <- sessions_items_list[[i+1]]
}
}
Run Code Online (Sandbox Code Playgroud)
这是一些数据:
> sessions_items_list[[2]]
[1] "111502665618" "111505397996" "121238758674" "121480200508" "131159477858" "161469302097" "161474935929" "171526802604" "231197187139" "231381216285" "251502101205" "261650031415"
[13] "261652085962" "261652452940" "271538491767" "281398254987" "291227243345" "311065441334" "321561638226" "321566237993" "331042848072" "331251405185" "331366646532" "361096154736"
[25] "381043841996"
> sessions_items_list[[3]]
[1] "111502665618" "111505397996" "121238758674" "131159477858" "161469302097" "161474935929" "171526802604" "231197187139" "231381216285" "251502101205" …Run Code Online (Sandbox Code Playgroud)