簡體   English   中英

給定匹配變量的向量,基於因子水平n次的R中的子集

[英]subset in R based on factor level n-times given a vector of matching variables

R中的新手,我一直在嘗試尋找一種簡潔的方法(不使用循環)來執行以下操作:

x <- c(0, 4)
y <- c(1, 2)
df <- data.frame(x,y)

因此,如果我要輸出y = 1的所有x:

df$x[df$y == 1]

但是如果我有一個向量,例如<-c(1,1,1),該怎么辦?

我不能只是做:

df$x[df$y == a]

因為它只是一個子集:

[1] 0

但我希望輸出為向量c(0,0,0)

顯然,這不是解決問題的辦法,但是關於哪一個的任何線索呢?

謝謝!

我認為您所追求的是%in% 嘗試:

df$x[df$y %in% a]

我認為您正在尋找%in%

df$x[df$y %in% a]

%in%返回TRUE在每個值df$y時,它 a

正確的方法是

df[df$y %in% a,]$x

要么

df[df$y %in% a,'x']

根據您的問題,期望的結果是向量c(0,0,0) 您可以實現的一種方法是:

rep(df$x[df$y %in% a], length(a))
#[1] 0 0 0

但是您需要知道其含義,例如,如果更改a使其包含不同的數字。 這是另一個例子:

a <- c(3,1,2)
rep(df$x[df$y %in% a], length(a))
#[1] 0 4 0 4 0 4

因此,在這種情況下,輸出的長度為2*length(a)因為兩個不同的值a匹配條目中的df$y 從您的問題尚不清楚在這種情況下您想要什么行為。 因此,這里的第三個例子,如果你想要的每個值a重復的只有盡可能多的元素的數目a說也存在於df$y

a <- c(3,1,2)
rep(df$x[df$y %in% a], length(a[a %in% df$y]))
#[1] 0 4 0 4

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM