Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 按列组合应用的结果_R - Fatal编程技术网

R 按列组合应用的结果

R 按列组合应用的结果,r,R,我有一个数据框。在我的应用程序中,此数据框的维度和列名是先验未知的,但例如: v1 <- sample(1:100, 5, replace=F) v2 <- sample(1:100, 5, replace=F) v3 <- sample(1:100, 5, replace=F) sample_matrix <- data.frame(v1, v2, v3) 但是,如果函数只返回1个参数,则它会执行与所需相反的操作: dummy_func2 <

我有一个数据框。在我的应用程序中,此数据框的维度和列名是先验未知的,但例如:

  v1 <- sample(1:100, 5, replace=F)
  v2 <- sample(1:100, 5, replace=F)
  v3 <- sample(1:100, 5, replace=F)

  sample_matrix <- data.frame(v1, v2, v3)
但是,如果函数只返回1个参数,则它会执行与所需相反的操作:

  dummy_func2 <- function(x) c(1)
  data.frame(t(apply(sample_matrix, 1, dummy_func2))

    X1 X2 X3 X4 X5
  1  1  1  1  1  1
dummy\u func2您可以使用
lappy()
,这样您总是可以得到一个结果列表:

sample_matrix<-t(sample_matrix)

dummy_func1 <- function(x) c(1, 2)
a <- lapply(as.data.frame(sample_matrix) ,  dummy_func1)

t(data.frame(a))
       [,1] [,2]
    v1    1    2
    v2    1    2
    v3    1    2

dummy_func2 <- function(x) c(1)
b<- lapply(as.data.frame(sample_matrix),  dummy_func2)

t(data.frame(b))
       [,1]
    v1    1
    v2    1
    v3    1          

sample\u matrix非常感谢!使用lapply是一个非常好的主意。我唯一关心的是,如果数据集很大,太多的转置将不会非常有效;比如说
big说到换位,我注意到我原来的答案不符合你的要求,因为你想要一个按行应用。相应地编辑了我的答案。关于换位,你是对的-我测试过了,开销很小。但是我不明白为什么要在编辑中转置原始数据集,t(as.data.frame(lappy(sample\u matrix,dummy\u func2))对我来说是正确的。。。。它确实管用,但仍然不是超级可爱。除非有新的证据,否则我将接受你的回答。
  dummy_func2 <- function(x) c(1)
  data.frame(t(apply(sample_matrix, 1, dummy_func2))

    X1 X2 X3 X4 X5
  1  1  1  1  1  1
  res <- data.frame(apply(sample_matrix, 1, dummy_func2))
  if(ncol(res) > 1) res <- t(res)
sample_matrix<-t(sample_matrix)

dummy_func1 <- function(x) c(1, 2)
a <- lapply(as.data.frame(sample_matrix) ,  dummy_func1)

t(data.frame(a))
       [,1] [,2]
    v1    1    2
    v2    1    2
    v3    1    2

dummy_func2 <- function(x) c(1)
b<- lapply(as.data.frame(sample_matrix),  dummy_func2)

t(data.frame(b))
       [,1]
    v1    1
    v2    1
    v3    1