r中函数内的子集-始终返回所选变量的第一个因子

r中函数内的子集-始终返回所选变量的第一个因子,r,data-manipulation,R,Data Manipulation,我想在我编写的函数中对数据进行子集划分,但我一直遇到同样的问题,即子集数据就是我想要的数据 样本数据: n = c(2, 3, 5) QID = c("aa", "bb", "cc") b = c(TRUE, FALSE, TRUE) df = data.frame(n, QID, b) df$QID = as.character(df$QID) str(df) 'data.frame': 3 obs. of 3 variables: $ n: num 2 3 5 $ QID

我想在我编写的函数中对数据进行子集划分,但我一直遇到同样的问题,即子集数据就是我想要的数据

样本数据:

n = c(2, 3, 5) 
QID = c("aa", "bb", "cc") 
b = c(TRUE, FALSE, TRUE) 
df = data.frame(n, QID, b) 
df$QID = as.character(df$QID)
str(df)
'data.frame':   3 obs. of  3 variables:
 $ n: num  2 3 5
 $ QID: chr  "aa" "bb" "cc"
 $ b: logi  TRUE FALSE TRUE 
我编写的函数是,我需要首先将函数中的数据子集,然后继续

testFun = function(QID){
   QofInterest = subset(data, QID == String(QID))
   ...
return(QofInterest)
}
但它总是返回第一个char值的数据。例如,如果我这样做:

dataWanted = testFun("bb")
它将始终返回QID==“aa”的行


我不知道为什么会这样。如有任何建议,将不胜感激

不清楚为什么需要
String
,以及从哪个包使用它。简单地

testFun = function(str1){
   subset(df, QID == str1)

 }

testFun('bb')
#  n QID     b
#2 3  bb FALSE

返回所需的行

不清楚为什么需要
字符串
,以及使用该字符串的包。简单地

testFun = function(str1){
   subset(df, QID == str1)

 }

testFun('bb')
#  n QID     b
#2 3  bb FALSE

返回所需的行

请添加您正在使用的包。我找不到
字符串
函数。请添加您正在使用的软件包。我找不到
字符串
函数。谢谢!但是你能告诉我为什么这里不需要字符串吗?@lalalulu函数的输入,即
'bb'
已经是一个字符串了,但是为什么使用字符串(QID)使这个函数总是返回第一个值呢?谢谢你的澄清@lalalulu您从哪里获得的
字符串
函数。谢谢!但是你能告诉我为什么这里不需要字符串吗?@lalalulu函数的输入,即
'bb'
已经是一个字符串了,但是为什么使用字符串(QID)使这个函数总是返回第一个值呢?谢谢你的澄清@Lalulu从哪里获得
字符串
函数的。