带文本输入的R函数

带文本输入的R函数,r,function,text,R,Function,Text,我在R中有一个函数,它将矩阵作为输入,并输出一个数据帧,其中包含: name X Y Z Amy 25 40 78 Brad 67 78 90 .. 我想向函数添加一个文本参数,如下所示: f(x,NameChoice) { #...matrix calcs # return( subset( dataframe, Name = NameChoice ) ) } 因此f(x,Amy)将有以下

我在R中有一个函数,它将矩阵作为输入,并输出一个数据帧,其中包含:

name   X    Y      Z
  Amy   25     40   78
  Brad    67    78   90
   ..
我想向函数添加一个文本参数,如下所示:

  f(x,NameChoice) { #...matrix calcs #
                return( subset( dataframe, Name = NameChoice ) )
}
因此
f(x,Amy)
将有以下输出:

Amy   25     40   78
试试这个(注意
子集的帮助页面特别建议不要在函数中使用它)

func.in试试这个(注意
subset
的帮助页面特别建议不要在函数中使用它)


func.in我想你会期待这个:

df
name val1 val2 val3 val4
abc    1    5    9   13
def    2    6   10   14
ghi    3    7   11   15
klm    4    8   12   16


f<- function(x,NameChoice) { 
  return( subset( x, name == NameChoice ) )
}

f(df,'abc')

result:
name val1 val2 val3 val4
abc    1    5    9   13
df
名称val1 val2 val3 val4
abc 1 5 9 13
DEF2 6 10 14
ghi 371115
荷航481126

f我想你会期待这个:

df
name val1 val2 val3 val4
abc    1    5    9   13
def    2    6   10   14
ghi    3    7   11   15
klm    4    8   12   16


f<- function(x,NameChoice) { 
  return( subset( x, name == NameChoice ) )
}

f(df,'abc')

result:
name val1 val2 val3 val4
abc    1    5    9   13
df
名称val1 val2 val3 val4
abc 1 5 9 13
DEF2 6 10 14
ghi 371115
荷航481126

f这里是没有可疑方法的代码

name val1 val2 val3 val4
abc    1    5    9   13
def    2    6   10   14
ghi    3    7   11   15
klm    4    8   12   16

fun<-function(x,NameChoice){
  return(x[which(x$name==NameChoice),])
}

fun(df,'ghi')

result:
ghi    3    7   11   15
name val1 val2 val3 val4
abc 1 5 9 13
DEF2 6 10 14
ghi 371115
荷航481126

有趣的这里是没有可疑的
方法的代码

name val1 val2 val3 val4
abc    1    5    9   13
def    2    6   10   14
ghi    3    7   11   15
klm    4    8   12   16

fun<-function(x,NameChoice){
  return(x[which(x$name==NameChoice),])
}

fun(df,'ghi')

result:
ghi    3    7   11   15
name val1 val2 val3 val4
abc 1 5 9 13
DEF2 6 10 14
ghi 371115
荷航481126

funMake it
f(x,“Amy”)
并且应该可以正常工作-
Name
列实际上包含字符串
“Amy”
,因此这应该是传递给函数的参数。矩阵中的列为
Name
,但
子集中的
Name
。另外,您需要
=
来测试相等性,而不是
=
。将其设置为
f(x,“Amy”)
,它应该可以正常工作-
Name
列实际上包含字符串
“Amy”
,因此这应该是传递给函数的参数。矩阵中的列为
Name
,但是
子集中的
名称
。另外,您需要
=
来测试相等性,而不是
=