我有2个载体
vec_1
[1] 2 3 4 5 6 7 8 9 10 11 12 13 14 2 3 4 5 6 7 8 9 10 11 12 13 14 2 3 4 5 6 7 8 9
[35] 10 11 12 13 14 2 3 4 5 6 7 8 9 10 11 12 13 14
vec_2
[1] 12 3 13 3 14 4 10 8 9 5 7 5 13 11 6 10 8 8 14 12 6 11 8 5 3 6
我想从vec_2
删除vec_1
的所有元素
当然,函数setdiff
并非如此,因为例如vec_2
中有两个10s值。我想只删除10个(不是所有4个值的10个)。
编辑:预期产出:
vec_1
[1] 2 2 2 2 3 4 4 4 5 6 7 7 7 9 9 9 10 10 11 11 12 12 13 13 14 14
我怎样才能在r?
中这样做答案 0 :(得分:2)
以下是<html>
<head>
<title>Get images from db</title>
</head>
<body>
<?php
$servername = "localhost";
$username = "root";
$password = "";
$db="uni";
$conn = new mysqli( $servername, $username, $password, $db );
if ( $conn->connect_error ) die( "Connection failed: " . $conn->connect_error );
$result = $conn->query( "SELECT * FROM `upload_img`" );
while( $rs = $result->fetch_object() ){
echo "
<img src='{$rs->img_path}' />
<br />";
}
?>
</body>
</html>
union
答案 1 :(得分:2)
当然,不是最好的解决方案,但这是一种方式。
我创建了一个简化的例子。
vec1 <- c(1, 2, 3, 1, 1, 5)
vec2 <- c(1, 3, 5)
#Converting the frequency table to a data frame
x1 <- data.frame(table(vec1))
x2 <- data.frame(table(vec2))
#Assuming your vec1 has all the elements present in vec2
new_df <- merge(x1, x2, by.x = "vec1", by.y = "vec2", all.x = TRUE)
new_df
# vec1 Freq.x Freq.y
#1 1 3 1
#2 2 1 NA
#3 3 1 1
#4 5 1 1
#Replacing NA's by 0
new_df[is.na(new_df)] <- 0
#Subtracting the frequencies of common elements in two vectors
final <- cbind(new_df[1], new_df[2] - new_df[3])
final
# vec1 Freq.x
#1 1 2
#2 2 1
#3 3 0
#4 5 0
#Recreating a new vector based on the final dataframe
rep(final$vec1, times = final$Freq.x)
# [1] 1 1 2
答案 2 :(得分:1)
您可以使用简单的for循环执行此操作:
for(i in 1:length(vec2)){
i=which(vec1 %in% vec2[i])[1]
vec1=vec1[-i]
}
您只需识别第一个位置并从原始矢量中删除。
答案 3 :(得分:0)
你也可以试试这个:
for (el in vec2[vec2 %in% intersect(vec1, vec2)])
vec1 <- vec1[-which(vec1==el)[1]]
sort(vec1)
#[1] 2 2 2 2 3 4 4 4 5 6 7 7 7 9 9 9 10 10 11 11 12 12 13 13 14 14