我有一个包含数据的文件c("A","T","B","F")
.
我用的时候:
read.csv(myfile,header=F,stringsAsFactors=F)
Run Code Online (Sandbox Code Playgroud)
ř解释字符T
作为TRUE
与F
作为FALSE
我做错了吗?
嗨,我正在尝试使用for循环命名变量,所以我获得了变量的动态名称.
for (i in 1:nX) {
paste("X",i, sep="")=datos[,i+1]
next
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试从csv文件中创建一个以逗号分隔的表.我知道并非所有行都具有相同数量的元素,因此我会编写一些代码来消除这些行.问题是有些行包含数字(以千为单位),其中包括另一个逗号.我无法正确拆分这些行,这是我的代码:
pURL <- "http://financials.morningstar.com/ajax/exportKR2CSV.html?&callback=?&t=EI®ion=FRA&order=asc"
res <- read.table(pURL, header=T, sep='\t', dec = '.', stringsAsFactors=F)
x <- unlist( lapply(keyRatios, function(u) strsplit(u,split='\n')) [[1]] )
Run Code Online (Sandbox Code Playgroud) 我正在测试kernlab
回归问题中的包。'Error in .local(object, ...) : test vector does not match model !
将ksvm
对象传递给predict
函数时,这似乎是一个常见的问题。但是,我刚刚找到了不适用于我的问题的分类问题或自定义内核的答案(我使用内置的进行回归)。我在这里没有想法了,我的示例代码是:
data <- matrix(rnorm(200*10),200,10)
tr <- data[1:150,]
ts <- data[151:200,]
mod <- ksvm(x = tr[,-1],
y = tr[,1],
kernel = "rbfdot", type = 'nu-svr',
kpar = "automatic", C = 60, cross = 3)
pred <- predict(mod,
ts
)
Run Code Online (Sandbox Code Playgroud) 我使用OLS拟合线性模型,并使用R中的函数比例缩放我的回归量,因为变量之间的度量单位不同.然后,我使用lm命令拟合模型并获得拟合模型的系数.据我所知,拟合模型的系数与原始回归量变量的系数不同,因此必须先缩小才能解释.我一直在寻找一种无法找到任何东西的直接方法.有谁知道这是怎么做到的吗?
请查看代码,能否请您帮我实施您提出的建议?
library(zoo)
filename="DataReg4.csv"
filepath=paste("C:/Reg/",filename, sep="")
separator=";"
readfile=read.zoo(filepath, sep=separator, header=T, format = "%m/%d/%Y", dec=".")
readfile=as.data.frame(readfile)
str(readfile)
DF=readfile
DF=as.data.frame(scale(DF))
fm=lm(USD_EUR~diff_int+GDP_US+Net.exports.Eur,data=DF)
summary(fm)
plot(fm)
Run Code Online (Sandbox Code Playgroud)
对不起,这是数据.
我正在使用lpsolve
包进行线性编程,但在其教程中已经阅读过只能解决非负变量的问题.
这是我的代码:
library(lpSolve) #linear programming solver
c = c(30, 18, 20, 23, 24, 26)
a = scan(text="66 89 82 14 35 72")
b = 50
con.qual.s1=scan(text="64 98 17 55 27 80")
con.qual.s2=scan(text="16 59 88 89 60 47")
qual.cons=c(53,82)
n=6 #activities
m=3 #resources
f.rhs = c(b,qual.cons)
f.con <- matrix (rbind(a,con.qual.s1,con.qual.s2,diag.p),nrow=m+nrow(diag.p))
f.obj.d <- c(50,53,82)
diag.d=diag(x = 1, m, m) #non-negativity
f.con.d <- matrix (rbind(t(f.con[1:m,]),diag.d),nrow=n+nrow(diag.d))
f.dir.d <- c(rep("<=",7),rep(">=",2))
f.rhs.d <- c(c,rep(0,m))
of.d=lp ("max", f.obj.d, f.con.d, f.dir.d, f.rhs.d,compute.sens=TRUE)
Run Code Online (Sandbox Code Playgroud)
请注意,忽略约束编号7为非正数的事实.
编辑:我已经为lpSolveAPI
包添加了新代码.为了检查是否有效,我为原始问题和双重问题准备了不同的代码. …
我需要生成从范围内的随机整数,发现很有趣的东西,讨论在这里通过了答案@Walter
.但是,它是C++11
标准的,我需要使用C
,有没有办法从C拨打电话?我在这里重现他的答案:
#include <random>
std::random_device rd; // only used once to initialise (seed) engine
std::mt19937 rng(rd()); // random-number engine used (Mersenne-Twister in this case)
std::uniform_int_distribution<int> uni(min,max); // guaranteed unbiased
auto random_integer = uni(rng);
Run Code Online (Sandbox Code Playgroud) 运行后我得到了意想不到的结果:
test = c(rep(FALSE, 2), rep(TRUE, 6))
ifelse(test, c(1:8)[test], 1)
[1] 1 1 5 6 7 8 3 4
Run Code Online (Sandbox Code Playgroud)
我本来期望1 1 3 4 5 6 7 8
,但的索引yes
中ifelse(test, yes, no)
被打开.也许我需要更多咖啡,但如果有人能解释这个结果背后的逻辑,我将不胜感激.
这是我的数据帧df
我尝试着:
df=data.frame(rbind(c(1,"*","*"),c("*",3,"*"))
df2=as.data.frame(sapply(df,sub,pattern="*",replacement="NA"))
Run Code Online (Sandbox Code Playgroud)
它不起作用,因为星号,但我生气,试图更换它.
如果我理解正确,字段Armadillo
就像是任意对象的列表.例如,一组不同大小的矩阵,或矩阵和向量.在文档中,我看到了cube
可以使用的类型,slices
因此您可以使用它们进行子集化.但是,似乎没有特定的方法来对字段进行子集化.
我的代码的简化版本是:
arma::mat A = eye(2,2);
arma::mat B = eye(3,3)*3;
arma::mat C = eye(4,4)*4;
arma::field<arma::mat> F(3,1);
F(0,0) = A;
F(1,0) = B;
F(2,1) = C;
// to get matrices B and C
F.slices(1,2);
Run Code Online (Sandbox Code Playgroud)
但得到错误
Error: field::slices(): indicies out of bounds or incorrectly used