我正在努力删除字符串中下划线之前的子字符串.我想在下划线变化之前使用*(通配符)作为位:
a <- c("foo_5", "bar_7")
a <- gsub("*_", "", a, perl = TRUE)
Run Code Online (Sandbox Code Playgroud)
结果应如下所示:
> a
[1] 5 7
Run Code Online (Sandbox Code Playgroud)
我也试过像"^*"或"? "这样的东西但是没有真正起作用.
我正在使用该函数prcomp来计算前两个主要组件.但是,我的数据有一些NA值,因此函数会抛出错误.即使在帮助文件中提到,定义的na.action似乎也不起作用?prcomp
这是我的例子:
d <- data.frame(V1 = sample(1:100, 10), V2 = sample(1:100, 10))
prcomp(d, center = TRUE, scale = TRUE, na.action = na.omit)
d$V1[5] <- NA
d$V2[7] <- NA
prcomp(d, center = TRUE, scale = TRUE, na.action = na.omit)
Run Code Online (Sandbox Code Playgroud)
我正在使用适用于Mac OS X的最新R版本2.15.1.
prcomp失败后有人能看出原因吗?
这是我的新例子:
d <- data.frame(V1 = sample(1:100, 10), V2 = sample(1:100, 10))
result <- prcomp(d, center = TRUE, scale = TRUE, na.action = na.omit)
result$x
d$V1[5] <- NA
result <- prcomp(~V1+V2, data=d, center = TRUE, …Run Code Online (Sandbox Code Playgroud) 复杂的标题,但这是我想要实现的一个简单的例子:
d <- data.frame(v1 = c(1,2,3,4,5,6,7,8),
v2 = c("A","E","C","B","B","C","A","E"))
m <- data.frame(v3 = c("D","E","A","C","D","B"),
v4 = c("d","e","a","c","d","b"))
Run Code Online (Sandbox Code Playgroud)
在价值d$v2应该由值来代替m$v4从值相匹配d$v2的m$v3
生成的数据框d应如下所示:
v1 v4
1 a
2 e
3 c
4 b
5 b
6 c
7 a
8 e
Run Code Online (Sandbox Code Playgroud)
我尝试了不同的东西,我最接近的是: d$v2 <- m$v4[which(m$v3 %in% d$v2)]
我试着再次避免任何for循环!必须是可能的:-)不知怎的......;)
以下示例ggplot在一行中创建一个带有4个面板"A","B","C","D"的面板.
我想出了如何在一列中绘制这4个面板.然而,仍然是一个谜团是如何安排4个面板,使"A"和"B"在第一行,"C"和"D"放在一个单独的(第二)行?
这是我的代码:
df <- data.frame(
x = rep(rep(1:10, each=10), 2),
y = rep(rep(1:10, 20), 2),
grid = rep(LETTERS[1:4], each=100)
)
ggplot(df, aes(x = x, y = y)) +
geom_point() +
facet_grid(. ~ grid, scales = "free")
Run Code Online (Sandbox Code Playgroud) 我有以下两个数据框:
d <- data.frame(c1 = c("A","A","B","C","A","C","D","D"))
map <- data.frame(c1 = c("A","B","C","D"), c2 = c(12,14,16,25))
Run Code Online (Sandbox Code Playgroud)
如何在数据框d中添加另一个名为"匹配"的列,其中包含数据框图中找到的相应值?所以数据框d应如下所示:
A 12
A 12
B 14
C 16
A 12
C 16
D 25
D 25
Run Code Online (Sandbox Code Playgroud)
提前谢谢了!
我实现了以下函数来绘制ggplot使用的不同颜色.它们还可以绘制图例中的十六进制颜色值.但是,不知何故,颜色和十六进制值的分配是错误的,我不明白为什么.我在将十六进制颜色添加到数据框之前对其进行了排序,data然后在ggplot2函数中使用.我认为这样可以解决问题,但事实并非如此.我还创建了col包含十六进制的矢量以及我实际想要作为图例的rgb颜色值,但我也在努力使这个工作
ggplot_colors <- function(n, size=8, alpha=1) {
library(grDevices)
hues = seq(15, 375, length=n+1)
cols_hex <- sort(hcl(h=hues, l=65, c=100)[1:n])
cols_rgb <- col2rgb(cols_hex)
cols_rgb <- apply(cols_rgb, 2, function(x){paste(x, collapse=",")})
cols <- paste(cols_hex, cols_rgb, sep="; ")
data <- data.frame(x=1:length(cols),
y=1:length(cols),
cols_hex=cols_hex,
cols_rgb=cols_rgb,
cols=cols)
ggplot(NULL) +
geom_point(data=data,
aes(x=x, y=y, colour=cols_hex), size=size, alpha=alpha)
}
ggplot_colors(15, 8, 1)
Run Code Online (Sandbox Code Playgroud)

作为RGB值(248,118,109)和十六进制值F8766D的红色在图例中分配了十六进制值00B0F6
如何拆分以下data.frame
df <- data.frame(var1 = c("a", 1, 2, 3, "a", 1, 2, 3, 4, 5, 6, "a", 1, 2), var2 = 1:14)
Run Code Online (Sandbox Code Playgroud)
进入/组的列表
a 1
1 2
2 3
3 4
a 5
1 6
2 7
3 8
4 9
5 10
6 11
a 12
1 13
2 14
Run Code Online (Sandbox Code Playgroud)
基本上,第1列中的值"a"是我想要分割数据帧的标记/标识符.我知道split函数,但这意味着我必须添加另一列,因为从我的例子中可以看出,组的大小可能会有所不同我不知道如何自动创建这样的虚拟列以满足我的需要.
有什么想法吗?
干杯,
斯文
我有一个长度为100的向量t,并希望将其分为30和70值,但这些值应随机选择,无需替换.因此,30个值中没有一个被允许在70个值的子向量中,反之亦然.
我知道R函数sample可以用来随机选择带有和不带替换的向量的值.但是,即使我使用replace = FALSE,我必须sample使用30 运行该函数两次,并选择70个值运行一次.这意味着30个值中的一些可能在70个值中,反之亦然.
有任何想法吗?
考虑以下以逗号分隔的数字字符串:
s <- "1,2,3,4,8,9,14,15,16,19"
s
# [1] "1,2,3,4,8,9,14,15,16,19"
Run Code Online (Sandbox Code Playgroud)
是否可以将连续数字的运行折叠到其相应的范围内,例如1,2,3,4上面的运行将折叠到范围内1-4。所需的结果类似于以下字符串:
s
# [1] "1-4,8,9,14-16,19"
Run Code Online (Sandbox Code Playgroud) 我的矩阵由0到100之间的值组成,尺寸为100 x 100.我基本上想要绘制这个矩阵,但是将所有值都设置为50以上,例如红色,将下面的颜色设置为蓝色.最重要的是,我想添加一个漂亮的grayisch网格,就像他们在这里用ggplot做的那样:
我想知道最简单的方法是什么?我不确定我是否想尝试ggplot,因为它看起来很复杂到目前为止我所看到的.这样的任务有没有其他简单的情节功能?