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