我需要将用户创建的函数应用于数据集中选定的变量组合。
简单示例:
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)?
答案 0 :(得分:0)
使用myfun( w[,"x"] , w[,"y"] )
或myfun( w[,"x"] , w[,"z"] )
。 $
运算符不会处理您在上面发布的数据(我不知道您是否正在尝试这样做),因为它用于选择列表中的单个元素({{1实际上是矢量列表,可能是不同类的(例如data.frame
或numeric
),而你拥有的是character
。没有可从矩阵中选择的列表元素。矩阵是一个二维向量:
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
并使用data.frame
选择合适的列:
$