R 将字符串转换为列名
我有一个函数,它根据给定的模型、数据矩阵和列名进行一些计算 但是,我在理解如何传递有关列名的信息时遇到了一些困难。我试过:R 将字符串转换为列名,r,R,我有一个函数,它根据给定的模型、数据矩阵和列名进行一些计算 但是,我在理解如何传递有关列名的信息时遇到了一些困难。我试过: var=as.name("IR2") summary(mat$var) 但它不起作用。有可能做我想做的吗?谢谢 要测试的代码: mat <- matrix(rnorm(20), ncol=2, nrow=10) colnames(mat) <- c("fy","IR2") mat是否仅使用DIMNAME命名列 mat <- matrix(rnorm(2
var=as.name("IR2")
summary(mat$var)
但它不起作用。有可能做我想做的吗?谢谢
要测试的代码:
mat <- matrix(rnorm(20), ncol=2, nrow=10)
colnames(mat) <- c("fy","IR2")
mat是否仅使用DIMNAME命名列
mat <- matrix(rnorm(20), ncol=2, nrow=10, dimnames= list(c(1:10), c("fy","IR2")))
如果列名以前未知,可以通过以下方法调用它
mat[, "columnName"]
在您的情况下,如果您只想处理“fy”列,您可以将该列名称传递给您的函数并如上所述调用它
你基本上是在打电话
mat[,"fy"]
例如,假设我们想要编写一个函数,它采用矩阵和列名,并计算给定列的平均值(我们想要从头开始,因为这是一个示例)
#mat的评估结果如下
垫子
#fy IR2
#[1,] 1.0355858 -0.1065325
#[2,] 1.0415242 -0.7736924
#[3,] -0.7607343 -1.6289547
#[4,] 0.6743018 -0.4028445
#[5,] 1.2324244 0.4847683
#[6,] 0.2128944 1.1584937
#[7,] 0.9460752 -1.6287894
#[8,] 0.7093235 1.5833613
#[9,] 0.3015283 0.3296974
#[10,] 0.2002134 1.7815022
材料[,“fy”]
#这将返回一个向量,即fy列
#[1] 1.0355858 1.0415242 -0.7607343 0.6743018 1.2324244 0.2128944
#[7] 0.9460752 0.7093235 0.3015283 0.2002134
Colmean发现重复我所做的就是在SO搜索框中键入[r],然后键入你的问题标题,这是第二次点击。。。当然是你的。请在发布问题之前进行搜索。(我想这也在R-FAQ中。)我不认为它们是一样的。我愿意听理性的论证,而不仅仅是“我不这么认为”。在您的情况下,它应该是摘要(mat[[var]])
。仅仅因为[[
的结构在摘要中使用,并不意味着它“不同”。甚至可能有50或100个这样的问题,关于如何使用“$”不起作用,而使用[
或[[
加上不带引号的符号都会起作用。
mat[,"fy"]
#mat is evaluated to be the following
mat
# fy IR2
#[1,] 1.0355858 -0.1065325
#[2,] 1.0415242 -0.7736924
#[3,] -0.7607343 -1.6289547
#[4,] 0.6743018 -0.4028445
#[5,] 1.2324244 0.4847683
#[6,] 0.2128944 1.1584937
#[7,] 0.9460752 -1.6287894
#[8,] 0.7093235 1.5833613
#[9,] 0.3015283 0.3296974
#[10,] 0.2002134 1.7815022
mat[,"fy"]
#this returns a vector, the column fy
#[1] 1.0355858 1.0415242 -0.7607343 0.6743018 1.2324244 0.2128944
#[7] 0.9460752 0.7093235 0.3015283 0.2002134
colMean<-function(mat, columnName){
mean(mat[,columnName])
}
colMean(mat, "fy")
#[1] 0.5593137