我需要将用户创建的函数应用于数据集中选定的变量组合。
简单的例子:
x<-c(1:10)
y<-c(10:1)
z<-rep(2,10)
w<-cbind(x,y,z)
myfun<-function (a,b){
c<-a*b
return(c)}
如何将 myfun 应用于 - 比如说 - (x,y) 和 (x,z)?
我需要将用户创建的函数应用于数据集中选定的变量组合。
简单的例子:
x<-c(1:10)
y<-c(10:1)
z<-rep(2,10)
w<-cbind(x,y,z)
myfun<-function (a,b){
c<-a*b
return(c)}
如何将 myfun 应用于 - 比如说 - (x,y) 和 (x,z)?
使用myfun( w[,"x"] , w[,"y"] )
或myfun( w[,"x"] , w[,"z"] )
。该$
运算符不会处理您在上面发布的数据(我不知道这是否是您想要做的),因为它用于选择列表的单个元素(adata.frame
实际上是向量列表,可能是不同的类(例如numeric
或character
),而您拥有的是a matrix
。没有可以从矩阵中选择的列表元素。矩阵是一个二维向量:
x <- 1:10
x
# [1] 1 2 3 4 5 6 7 8 9 10
dim(x) <- c(5,2)
x
# [,1] [,2]
#[1,] 1 6
#[2,] 2 7
#[3,] 3 8
#[4,] 4 9
#[5,] 5 10
colnames(x) <- c( "A" , "B" )
x$A
Error in x$A : $ operator is invalid for atomic vectors
x[,"A"]
# [1] 1 2 3 4 5
但是我们可以将它转换为 adata.frame
如果我们想要并使用它$
来选择适当的列:
x <- as.data.frame(x)
x$A
# [1] 1 2 3 4 5