1

我需要将用户创建的函数应用于数据集中选定的变量组合。

简单的例子:

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)?

4

1 回答 1

0

使用myfun( w[,"x"] , w[,"y"] )myfun( w[,"x"] , w[,"z"] )。该$运算符不会处理您在上面发布的数据(我不知道这是否是您想要做的),因为它用于选择列表的单个元素(adata.frame实际上是向量列表,可能是不同的类(例如numericcharacter),而您拥有的是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
于 2013-05-01T12:11:07.133 回答