簡體   English   中英

在r中使用if…else語句進行子集

[英]Subsetting with an if…else statement in r

我正在嘗試對數據幀進行子集處理,以便在存在列名的情況下我對子集進行設置,但如果沒有,則忽略。 對於示例,我將使用mtcars數據集。 我要完成的工作是,如果前三列中有一個列“ vs”子集,而vs.這將是一個名為“ vsdf”的日期框架。

df <- mtcars
if(colnames(df)=="vs") {
   vsdf <- df[,1,2,3,"vs"]
} else {
  NULL
}

任何幫助或指導將不勝感激。

您的代碼有兩個問題:

1)使用==

您想檢查“ vs”是否是列名的一部分,但是由於使用的是==因此這意味着您要檢查列名(是否存在)是否完全是“ vs”。 僅當只有一列,即“ vs”時,這才是正確的。 相反,您需要使用%in% ,如

if("vs" %in% colnames(d)) 
 {...}

2)分詞語法df[,1,2,3,"vs"]

子集data.frame通常遵循以下語法

df[i, j] 

其中i表示行, j表示列。 由於要對columnns進行子集化,因此將在j進行此操作。 您所做的是為[.data.frame提供了更多的參數,因為您沒有將這些值放入向量中。 向量可以是數字/整數或字符向量,但不能像您一樣將兩種形式混合使用。 相反,您可以像這樣構建向量:

df[, c(names(df)[1:3], "vs")]

暫無
暫無

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

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