[英]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.