我正在尝试创建一个假数据框来检查R中多项Logit模型的效果.我的代码正是我想要做的,它是创建一个代表不同变量级别的每个组合的行.
var1 <- seq(1,10,1)
var2 <- seq(1,20,5)
FakeData <- as.data.frame(matrix(NA, nrow=length(var1) * length(var2),
ncol=2))
row <- 1
for(i in 1:length(var1)){
for(j in 1:length(var2)){
FakeData[row, 1] <- var1[i]
FakeData[row, 2] <- var2[j]
row <- row + 1
}
}
> head(FakeData)
V1 V2
1 1 1
2 1 6
3 1 11
4 1 16
5 2 1
6 2 6
Run Code Online (Sandbox Code Playgroud)
我的问题是,当应用于我的问题时,这个代码非常低效,每个变量大约有十个级别.有关可能使其更快的功能的任何提示?
我有一个矩阵,根据理论应该是对称的,但在我的数据中可能不会被观察为对称的.我想通过使用两个比较单元格的最大值来强制这是对称的.
test_matrix <- matrix(c(0,1,2,1,0,1,1.5,1,0), nrow = 3)
test_matrix
#> [,1] [,2] [,3]
#>[1,] 0 1 1.5
#>[2,] 1 0 1.0
#>[3,] 2 1 0.0
Run Code Online (Sandbox Code Playgroud)
使用双循环很容易做到这一点.
for(i in 1:3){
for(j in 1:3){
test_matrix[i, j] <- max(test_matrix[i, j], test_matrix[j, i])
}
}
test_matrix
#> [,1] [,2] [,3]
#> [1,] 0 1 2
#> [2,] 1 0 1
#> [3,] 2 1 0
Run Code Online (Sandbox Code Playgroud)
但是我的矩阵大于$ 3x3 $,并且R的循环问题已被充分记录.我也有兴趣让我的代码尽可能干净.事实上,我考虑将其放在代码高尔夫上,但这是一个我认为其他人可能感兴趣的真正问题.
我已经看过这一个以及这一个,但我的不同之处在于那些操作似乎实际上有一个只需要重新排序的对称矩阵,而且我有一个矩阵需要改变为对称.
有关更多设置,请参阅此问题。我想Toy并行创建大量 class 实例。然后我想将它们写入 xml 树。
import itertools
import pandas as pd
import lxml.etree as et
import numpy as np
import sys
import multiprocessing as mp
def make_toys(df):
l = []
for index, row in df.iterrows():
toys = [Toy(row) for _ in range(row['number'])]
l += [x for x in toys if x is not None]
return l
class Toy(object):
def __new__(cls, *args, **kwargs):
if np.random.uniform() <= 1:
return super(Toy, cls).__new__(cls, *args, **kwargs)
def __init__(self, row):
self.id = …Run Code Online (Sandbox Code Playgroud) 我用.dbf文件做了很多工作,也用dplyr. 有一个错误write.dbf()阻止将tbl_df对象写入.dbf文件。
不幸的是,错误消息写得不好,因此很难弄清楚到底发生了什么。
这是一个 MWE
library(dplyr)
library(foreign)
d <- data_frame( x = 1:4, y = rnorm(4) )
write.dbf(d, "test.dbf")
Error in write.dbf(d, "test.dbf") : unknown column type in data frame
Run Code Online (Sandbox Code Playgroud) 我想贬低R中的多个列data.frame.使用这个问题的一个例子
set.seed(999)
library(plyr)
library(plm)
# random data.frame
dat <- expand.grid(id=factor(1:3), cluster=factor(1:6))
dat <- cbind(dat, x=runif(18), y=runif(18, 2, 5))
#demean x and y
dat.2 <- ddply(dat, .(cluster), transform, x=x-mean(x), y=y-mean(y))
Run Code Online (Sandbox Code Playgroud)
我的问题是我有(很多)超过2个变量,我想避免硬编码这个分析.我plyr一般都是新手; 为什么这样呢
dat.2 <- ddply(dat[,c(x,y)], .(cluster), transform, function(x) x - mean(x))
Run Code Online (Sandbox Code Playgroud)
不行?我缺少一些关键步骤吗?有没有更好的方法来做到这一点?
我有一个data_frame字符变量x随时间变化的地方.我想计算它改变的次数,并用这个计数填充一个新的向量.
df <- data_frame(
x = c("a", "a", "b", "b", "c", "b"),
wanted = c(1, 1, 2, 2, 3, 4)
)
x wanted
1 a 1
2 a 1
3 b 2
4 b 2
5 c 3
6 b 4
Run Code Online (Sandbox Code Playgroud)
这与rle(df$x)将返回的类似但不同
Run Length Encoding
lengths: int [1:4] 2 2 1 1
values : chr [1:4] "a" "b" "c" "b"
Run Code Online (Sandbox Code Playgroud)
我可以尝试rep()输出.我也试过这个,非常接近,但不是因为我无法立即弄清楚的原因:
df %>% mutate(
try_1 = cumsum(ifelse(x == lead(x) | is.na(lead(x)), 1, …Run Code Online (Sandbox Code Playgroud) 我正在Windows 7虚拟机上运行R 3.3的新安装,并尝试安装使用Rcpp的我自己的R软件包。该软件包可在GitHub上获得。我已经安装了Rtools Rcpp并且devtools
使用devtools::install_github("pbsag/tcadr"):
> devtools::install_github("pbsag/tcadr")
Downloading GitHub repo pbsag/tcadr@master
from URL https://api.github.com/repos/pbsag/tcadr/zipball/master
Installing tcadr
"C:/PROGRA~1/R/R-33~1.0/bin/x64/R" --no-site-file --no-environ --no-save \
--no-restore --quiet CMD INSTALL \
"C:/Users/Greg/AppData/Local/Temp/Rtmpwvw2qc/devtools1814572d2483/pbsag-tcadr-8ae1a82" \
--library="\\Mac/Home/Documents/R/win-library/3.3" --install-tests
* installing *source* package 'tcadr' ...
** libs
c:/Rtools/mingw_64/bin/g++ -I"C:/PROGRA~1/R/R-33~1.0/include" -DNDEBUG -I"\\Mac/Home/Documents/R/win-library/3.3/Rcpp/include" -I"d:/Compiler/gcc-4.9.3/local330/include" -O2 -Wall -mtune=core2 -c RcppExports.cpp -o RcppExports.o
RcppExports.cpp:4:18: fatal error: Rcpp.h: No such file or directory
#include <Rcpp.h>
^
compilation terminated.
make: *** [RcppExports.o] Error 1
Warning: running command 'make -f …Run Code Online (Sandbox Code Playgroud) r ×6
dplyr ×2
combinations ×1
expand ×1
matrix ×1
permutation ×1
plyr ×1
python ×1
rcpp ×1
variables ×1