我正在尝试执行线性回归,对于这样的模型:
Y = aX1 + bX2 + c
Run Code Online (Sandbox Code Playgroud)
所以, Y ~ X1 + X2
假设我有以下响应向量:
set.seed(1)
Y <- runif(100, -1.0, 1.0)
Run Code Online (Sandbox Code Playgroud)
以下预测变量矩阵:
X1 <- runif(100, 0.4, 1.0)
X2 <- sample(rep(0:1,each=50))
X <- cbind(X1, X2)
Run Code Online (Sandbox Code Playgroud)
我想对系数使用以下约束:
a + c >= 0
c >= 0
Run Code Online (Sandbox Code Playgroud)
所以对b没有约束.
我知道glmc包可以用来应用约束,但是我无法确定如何将它应用于我的约束.我也知道可以使用contr.sum,例如,所有系数总和为0,但这不是我想要做的.solve.QP()似乎是另一种可能性,meq=0可以使用设置使所有系数> = 0(同样,这里不是我的目标).
注意:解决方案必须能够处理响应向量Y中的NA值,例如:
Y <- runif(100, -1.0, 1.0)
Y[c(2,5,17,56,37,56,34,78)] <- NA
Run Code Online (Sandbox Code Playgroud) 我有一个看起来像这样的表:
er er.1 as as.1 as.2 rt op
a 1 6 90 8 6 4 87
b 1 8 56 7 5 5 9
c 8 7 6 4 5 9 6
d 1 0 8 6 4 3 6
e 9 7 2 4 3 89 7
Run Code Online (Sandbox Code Playgroud)
我想计算具有部分匹配名称的列之间的行平均值,以得到如下结果:
er as rt op
a 3.5 34.66666667 4 87
b 4.5 22.66666667 5 9
c 7.5 5 9 6
d 0.5 6 3 6
e 8 3 89 7
Run Code Online (Sandbox Code Playgroud)
我确实在这个问题上找到了一些有用的提示:
我想保留矢量中的非重复值,但不保留重复值中的一个元素。unique()对此不起作用。都不会重复()。
例如:
> test <- c(1,1,2,3,4,4,4,5,6,6,7,8,9,9)
> unique(test)
[1] 1 2 3 4 5 6 7 8 9
Run Code Online (Sandbox Code Playgroud)
而我希望结果是:2,3,5,7,8
关于如何解决这个问题的任何想法?谢谢!
我通常使用RStudio在R中进行编码,当逐行运行代码时,如果运行循环的第一行,则循环的内容将随之运行。调试代码非常方便,例如能够逐行运行代码而无需手动选择整个循环。在Spyder中,如果我运行循环的第一行,它就那样运行,就好像我试图运行一个空循环一样,并给出一个错误。如何在Spyder中正确地逐行运行代码?我已经研究了问题,但没有找到答案。谢谢您的帮助!
我有一个字符串向量,类似于这个,但有更多的元素:
s <- c("CGA-DV-558_T_90.67.0_DV_1541_07", "TC-V-576_T_90.0_DV_151_0", "TCA-DV-X_T_6.0_D_A2_07", "T-V-Z_T_2_D_A_0", "CGA-DV-AW0_T.1_24.4.0_V_A6_7", "ACGA-DV-A4W0_T_274.46.0_DV_A266_07")
Run Code Online (Sandbox Code Playgroud)
我想使用一个函数来提取分隔符“_”的第 n 个和第 i 个实例之间的字符串。例如,第 2 个 (n = 2) 和第 3 个 (i = 3) 实例之间的字符串,得到这个:
[1] "90.67.0" "90.0" "6.0" "2" "24.4.0" "274.46.0"
Run Code Online (Sandbox Code Playgroud)
或者如果 n = 4 且 i = 5"
[1] "1541" "151" "A2" "A" "A" "A266"
Run Code Online (Sandbox Code Playgroud)
有什么建议?感谢您的帮助!
我有一个如下所示的列表:
>aaa(+)
AAAAAAAAAA
>bbb(+)
BBBBBBBBBBBBBBBB
>ccc(-)
CCCCCCC
Run Code Online (Sandbox Code Playgroud)
我想使用 awk 在“(+)”或“(-)”之后加入下一行,并使用逗号分隔符,这样它看起来像这样:
>aaa(+),AAAAAAAAAAA
>bbb(+),BBBBBBBBBBBBBBBB
>ccc(-),CCCCCCC
Run Code Online (Sandbox Code Playgroud)
我已经尝试过以下操作(在 bash 中):
cat $file | awk '/(-)/||/(+)/{if (x)print x;x"";}{x=(!x)?$0:x","$0;}END{print x;}' > $new_file
Run Code Online (Sandbox Code Playgroud)
但这似乎给出了这样的结果:
>aaa(+),AAAAAAAAAAA
>aaa(+),AAAAAAAAAAA,>bbb(+),BBBBBBBBBBBBBBBB
>aaa(+),AAAAAAAAAAA,>bbb(+),BBBBBBBBBBBBBBBB,>ccc(-),CCCCCCC
Run Code Online (Sandbox Code Playgroud)
这显然不是我想做的。
任何帮助将不胜感激!
谢谢
我有这样的矢量:
test <- c("a","b","c","d")
test
[1] "a" "b" "c" "d"
Run Code Online (Sandbox Code Playgroud)
我想将一个字符串,例如"_2"粘贴到矢量的每个其他元素上,以获得:
"a" "b_2" "c" "d_2"
Run Code Online (Sandbox Code Playgroud)
我试过这个命令:
ifelse(test %in% seq(1, length(test), 2), test, paste(test, "_2", sep=""))
Run Code Online (Sandbox Code Playgroud)
但这只是给了我:
"a_2" "b_2" "c_2" "d_2"
Run Code Online (Sandbox Code Playgroud)
这是错的.有关如何正确执行此操作的任何建议?谢谢!