我有一个名为"成人"的数据帧
> str(adult[, 1:2)
'data.frame': 32561 obs. of 15 variables:
$ age : int 39 50 38 53 28 37 49 52 31 42 ...
$ worktp : Factor w/ 9 levels " ?"," Federal-gov",..: 8 7 5 5 5 5 5 7 5 5 ...
> is.factor(adult[,1])
[1] FALSE
> is.factor(adult[,2])
[1] TRUE
Run Code Online (Sandbox Code Playgroud)
一切顺利,直到我使用
> apply(adult[,1:2], 2, function(x) is.factor(x))
age worktp
FALSE FALSE
Run Code Online (Sandbox Code Playgroud)
为什么我在worktp上得到FALSE,其中is.factor()只是给了我真的?我真的需要这个apply()函数来处理我的数据帧.我应该使用其他一些应用相关的功能吗?
谢谢!
我有一个数据帧.我想检查class每一列.
x1 = rep(1:4, times=5)
x2 = factor(rep(letters[1:4], times=5))
xdat = data.frame(x1, x2)
> class(xdat)
[1] "data.frame"
> class(xdat$x1)
[1] "integer"
> class(xdat$x2)
[1] "factor"
Run Code Online (Sandbox Code Playgroud)
但是,想象一下,我有很多列,因此需要apply()用来帮助我做到这一点.但它不起作用.
apply(xdat, 2, class)
x1 x2
"character" "character"
Run Code Online (Sandbox Code Playgroud)
为什么我不能apply()用来查看每列的数据类型?或者我该怎么办?
谢谢!
我需要使用包含Mean + - SD的标题.到目前为止,我只能得到这个:
"Mean +- SD or N (%)"
[1] "Mean +- SD or N (%)"
Run Code Online (Sandbox Code Playgroud)
我怎样才能直接使用"+ - "符号?你知道一个角色,而不是两个角色.
仅仅是为了将来,其他符号如希腊字母等等呢?
我正在绘制标准正态分布。
curve(dnorm(x), from=-4, to=4,
main = "The Standard Normal Distibution",
ylab = "Probability Density",
xlab = "X")
Run Code Online (Sandbox Code Playgroud)
出于教学原因,我想将低于我选择的某个分位数的区域涂上阴影。我怎样才能做到这一点?
假设我有一串字
txt = "The licenses for most software"
length(txt)
1
Run Code Online (Sandbox Code Playgroud)
我可以使用strsplit将其拆分为复合词
t = unlist(strsplit(txt, split=" "))
length(t)
5
Run Code Online (Sandbox Code Playgroud)
现在我想撤消我所做的事情。如何将5个单词重新连接到原始字符串中?
谢谢
我正在使用OLS方法拟合标准多元回归.我有5个预测变量(2个连续和3个分类)加上2个双向交互项.我使用残差与拟合图进行了回归诊断.异方差性非常明显,bptest()也证实了这一点.
我不知道接下来该做什么.首先,我的因变量是合理对称的(我不认为我需要尝试转换我的DV).我的连续预测因素也没有高度倾斜.我想在lm()中使用权重; 但是,我怎么知道要使用什么重量?
有没有办法自动生成权重以执行加权最小二乘?或者你还有其他方法吗?
我有一个矩阵,例如:
a = rep(0:1, each=4)
b = rep(rep(0:1, each=2), 2)
c = rep(0:1, times=4)
mat = cbind(c,b,a)
Run Code Online (Sandbox Code Playgroud)
我需要对这个矩阵的所有列进行排序.我知道如何通过排序特定列(即有限数量的列)来完成此操作.
mat[order(mat[,"c"],mat[,"b"],mat[,"a"]),]
c b a
[1,] 0 0 0
[2,] 0 0 1
[3,] 0 1 0
[4,] 0 1 1
[5,] 1 0 0
[6,] 1 0 1
[7,] 1 1 0
[8,] 1 1 1
Run Code Online (Sandbox Code Playgroud)
但是,我需要一种通用的方法来执行此操作而不调用任何列名,因为我可以有任意数量的列.我如何按大量列排序?
我有一个矩阵的元素如下:
diag= rep(1,5)
offdiag = c(rep(1:4), rep(1:3), rep(1:2), 1)
Run Code Online (Sandbox Code Playgroud)
我想要的最终矩阵应该是一个对称矩阵,如下所示:
1 1 2 3 4
1 1 1 2 3
2 1 1 1 2
3 2 1 1 1
4 3 2 1 1
Run Code Online (Sandbox Code Playgroud)
其中对角线由diag填充,而下三角区域由offdiag柱填充.
在实践中,所有数字都是随机的.所以我需要一种通用的方法来用元素填充矩阵.
提前致谢!
我有一个长度为偶数的向量.
vec = c(1,3,2,4,5,6)
Run Code Online (Sandbox Code Playgroud)
我想将其转换为这样的列表,其中每2个连续的数字被放入子组件中.
[[1]]
[1] 1 3
[[2]]
[1] 2 4
[[3]]
[1] 5 6
Run Code Online (Sandbox Code Playgroud)
必须有一个简单的方法来做到这一点.如果更容易这样做,也可以从矩阵转换为这样的列表.
我有这句话包含"&/?".
c = "Do Sam&Lilly like yes/no questions?"
Run Code Online (Sandbox Code Playgroud)
我想在每个特殊字符之前和之后添加一个空格
"Do Sam & Lilly like yes / no questions ? "
Run Code Online (Sandbox Code Playgroud)
我只能通过艰难的方式得到这个:
c = gsub("[&]", " & ", c)
c = gsub("[/]", " / ", c)
c = gsub("[?]", " ? ", c)
Run Code Online (Sandbox Code Playgroud)
但想象一下,我有许多这些特殊的角色,保证使用[:alnum:].所以我真的在寻找一个看起来像这样的解决方案:
gsub("[[:alnum:]]", " [[:alnum:]] ", c)
Run Code Online (Sandbox Code Playgroud)
不幸的是,我不能以这种方式使用[:alnum:]作为第二个参数.
我有一串数字:
n1 = c(1, 1, 0, 6, 0, 0, 10, 10, 11, 12, 0, 0, 19, 23, 0, 0)
Run Code Online (Sandbox Code Playgroud)
我需要将0与相应的数字替换为"后面"以获得,同时将0留在尾部(因为它们背后没有任何东西):
n2 = c(1, 1, 6, 6, 10, 10, 10, 10, 11, 12, 19, 19, 19, 23, 0, 0)
Run Code Online (Sandbox Code Playgroud)
我如何从n1到n2?
这似乎比我之前提到的问题要难得多:
flodel提出了一个优雅的解决方案:
n2 <- n1[cummax(seq_along(n1) * (n1 != 0))]
Run Code Online (Sandbox Code Playgroud)
但是,这个解决方案在这里不起作用; 我已经尝试但未能调整代码.
别人能想出一个优雅的解决方案吗?
提前致谢!