我有一个data.frame数字和因子变量组成,如下所示.
testFrame <- data.frame(First=sample(1:10, 20, replace=T),
Second=sample(1:20, 20, replace=T), Third=sample(1:10, 20, replace=T),
Fourth=rep(c("Alice","Bob","Charlie","David"), 5),
Fifth=rep(c("Edward","Frank","Georgia","Hank","Isaac"),4))
Run Code Online (Sandbox Code Playgroud)
我想构建一个matrix为该因子分配虚拟变量并单独保留数值变量.
model.matrix(~ First + Second + Third + Fourth + Fifth, data=testFrame)
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,在运行时会将lm每个因子的一个级别作为参考级别.但是,我想为matrix所有因素的每个级别构建一个带有虚拟/指示变量的变量.我正在建立这个矩阵,glmnet所以我不担心多重共线性.
有没有办法model.matrix为每个级别的因子创建假人?
如何在python中得到矩阵的逆?我自己实现了它,但它是纯粹的python,我怀疑有更快的模块可以做到这一点.
我是R.的新手.我想用我的for循环结果填充一个空矩阵cbind.我的问题是,如何消除矩阵第一列中的NA.我在下面包含我的代码:
output<-matrix(,15,) ##generate an empty matrix with 15 rows, the first column already filled with NAs, is there any way to leave the first column empty?
for(`enter code here`){
normF<-`enter code here`
output<-cbind(output,normF)
}
Run Code Online (Sandbox Code Playgroud)
输出是我预期的矩阵.唯一的问题是它的第一列充满了NA.如何删除这些NA?
关于使用这些方法时实际发生的情况,文档非常模糊.有人可以解释Matrix实际上如何影响它所设置的位图吗?他们在那里使用了连接这个术语,但是我不清楚这个术语如何应用于坐标数据(之前只用过字符串操作).
我有一个长度为130,000的列表,其中每个元素是一个长度为110的字符向量.我想将此列表转换为维度为1,430,000*10的矩阵.我怎样才能更有效地做到这一点?\我的代码是:
output=NULL
for(i in 1:length(z)) {
output=rbind(output,
matrix(z[[i]],ncol=10,byrow=TRUE))
}
Run Code Online (Sandbox Code Playgroud) 我有问题将数据附加到已经是列表格式的列表中.我有一个程序,它将在模拟循环中导出结果对象.数据本身存储为矩阵列表.我的想法是将这些列表存储在一个列表中,然后将这个列表列表保存为R对象以供以后分析,但是我遇到了一些正确的问题.我将使用值而不是模拟中的矩阵数据来展示我用小抽象示例所做的事情:
假设我已经运行了3次模拟循环.在迭代期间,结果列表需要收集到我将保存为R对象的列表列表中:
列表包含其他列表并保存:
outlist1 <- list()
第一次迭代:
resultsa <- list(1,2,3,4,5)
outlist <- append(outlist1,resultsa)
第二次迭代:
resultsb <- list(6,7,8,9,10)
outlist <- append(outlist1,b)
第三次迭代:
resultsc <- list(11,12,13,14,15)
outlist <- list(outlist2,c)
但是,此解决方案不适用于以这种方式增长包含列表的列表,所需的结果是:
>outlist
[[1]]
[[1]][[1]]
[1] 1
[[1]][[2]]
[1] 2
[[1]][[3]]
[1] 3
[[1]][[4]]
[1] 4
[[1]][[5]]
[1] 5
[[2]]
[[2]][[1]]
[1] 6
[[2]][[2]]
[1] 7
[[2]][[3]]
[1] 8
[[2]][[4]]
[1] 9
[[2]][[5]]
[1] 10
[[3]]
[[3]][[1]]
[1] 11
[[3]][[2]]
[1] 12
[[3]][[3]]
[1] 13
[[3]][[4]]
[1] 14
[[3]][[5]]
[1] 15
Run Code Online (Sandbox Code Playgroud)
但是,我得到的是:
> outlist3 …Run Code Online (Sandbox Code Playgroud) 我想用固定的向量划分矩阵的每一行.例如
mat<-matrix(1,ncol=2,nrow=2,TRUE)
dev<-c(5,10)
Run Code Online (Sandbox Code Playgroud)
给mat/dev分割各列由dev.
[,1] [,2]
[1,] 0.2 0.2
[2,] 0.1 0.1
Run Code Online (Sandbox Code Playgroud)
但是,我希望得到这个结果,即按行进行操作:
rbind(mat[1,]/dev, mat[2,]/dev)
[,1] [,2]
[1,] 0.2 0.1
[2,] 0.2 0.1
Run Code Online (Sandbox Code Playgroud)
到那儿有明确的命令吗?
我有一个列表,其中每个元素是一个5*5矩阵.例如
[[1]]
V1 V2 V3 V4 V5
[1,] 0.000000 46.973700 21.453500 338.547000 10.401600
[2,] 43.020500 0.000000 130.652000 840.526000 56.363700
[3,] 12.605600 173.238000 0.000000 642.075000 19.628100
[4,] 217.946000 626.368000 481.329000 0.000000 642.341000
[5,] 217.946000 626.368000 481.329000 0.000000 642.341000
[[2]]
V1 V2 V3 V4 V5
[1,] 0.000000 47.973700 21.453500 338.547000 10.401600
[2,] 143.020500 0.000000 130.652000 840.526000 56.363700
[3,] 312.605600 17.238000 0.000000 642.075000 19.628100
[4,] 17.946000 126.368000 481.329000 0.000000 642.341000
[5,] 217.946000 626.368000 481.329000 0.000000 642.341000
...
Run Code Online (Sandbox Code Playgroud)
如何使用类似应用的函数对矩阵[1]到[n]求和,并返回一个5*5矩阵作为结果(每个元素是列表中每个矩阵中相应元素的总和)?
是否有一种简单的内置方法将2D Python列表打印为2D矩阵?
所以这:
[["A", "B"], ["C", "D"]]
Run Code Online (Sandbox Code Playgroud)
会变得像
A B
C D
Run Code Online (Sandbox Code Playgroud)
我找到了pprint模块,但它似乎没有做我想要的.
这个问题经常以某种形式出现(例如,见此处或此处).所以我认为我会以一般形式呈现它,并提供一个可能供将来参考的答案.
给定任意数量
n的可能不同大小的向量,生成一个n列矩阵,其行描述从这些向量中获取的元素的所有组合(笛卡尔积).
例如,
vectors = { [1 2], [3 6 9], [10 20] }
Run Code Online (Sandbox Code Playgroud)
应该给
combs = [ 1 3 10
1 3 20
1 6 10
1 6 20
1 9 10
1 9 20
2 3 10
2 3 20
2 6 10
2 6 20
2 9 10
2 9 20 ]
Run Code Online (Sandbox Code Playgroud)