我无法设定我的资料。我希望将数据子集放在第x列,其中前3个字符以G45开头。
我的数据框:
x <- c("G448", "G459", "G479", "G406")
y <- c(1:4)
My.Data <- data.frame (x,y)
我试过了:
subset (My.Data, x=="G45*")
但是我不确定如何使用通配符。我也尝试过grep()来找到索引:
grep ("G45*", My.Data$x)
但是它返回所有4行,而不仅仅是返回G45开头的行,可能还因为我不确定如何使用通配符。
使用[
提取非常简单:
grep
将为您提供与您的搜索模式相匹配的位置(除非您使用value = TRUE
)。
grep("^G45", My.Data$x)
# [1] 2
由于您在单列的值内搜索,因此实际上与行索引相对应。因此,将其与[
(将用于My.Data[rows, cols]
获取特定的行和列)一起使用。
My.Data[grep("^G45", My.Data$x), ]
# x y
# 2 G459 2
的帮助页面subset
显示了如何使用grep
以及grepl
与一起使用(subset
如果您更喜欢使用此功能)[
。这是一个例子。
subset(My.Data, grepl("^G45", My.Data$x))
# x y
# 2 G459 2
从R 3.3开始,现在还提供了该startsWith
函数,您可以再次使用该函数subset
(或与上述任何其他方法结合使用)。根据该功能的帮助页面,它比使用substring
或快得多grepl
。
subset(My.Data, startsWith(as.character(x), "G45"))
# x y
# 2 G459 2
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句