假设我们有一个产生的陈述integer(0),例如
a <- which(1:3 == 5)
Run Code Online (Sandbox Code Playgroud)
抓住这个最安全的方法是什么?
我有一个data.frame,我想按行转换为列表,这意味着每一行都对应于它自己的列表元素.换句话说,我想要一个只要data.frame有行的列表.
到目前为止,我已经通过以下方式解决了这个问题,但我想知道是否有更好的方法来解决这个问题.
xy.df <- data.frame(x = runif(10), y = runif(10))
# pre-allocate a list and fill it with a loop
xy.list <- vector("list", nrow(xy.df))
for (i in 1:nrow(xy.df)) {
xy.list[[i]] <- xy.df[i,]
}
Run Code Online (Sandbox Code Playgroud) 我很惊讶地发现R没有附带一个方便的函数来检查数字是否为整数.
is.integer(66) # FALSE
Run Code Online (Sandbox Code Playgroud)
在帮助文件警告:
is.integer(x)不测试是否x包含整数!为此,请使用round,如is.wholenumber(x)示例中的函数 .
该示例将此自定义函数作为"解决方法"
is.wholenumber <- function(x, tol = .Machine$double.eps^0.5) abs(x - round(x)) < tol
is.wholenumber(1) # is TRUE
Run Code Online (Sandbox Code Playgroud)
如果我必须编写一个函数来检查整数,假设我没有阅读上面的注释,我会编写一个函数,它会像
check.integer <- function(x) {
x == round(x)
}
Run Code Online (Sandbox Code Playgroud)
我的方法会在哪里失败?如果你穿着我的假想鞋,你的工作会是什么?
我已经陷入了问题:我需要绘制DPI = 1200和特定打印尺寸的图像.
默认情况下,png看起来不错......

png("test.png",width=3.25,height=3.25,units="in",res=1200)
par(mar=c(5,5,2,2),xaxs = "i",yaxs = "i",cex.axis=1.3,cex.lab=1.4)
plot(perf,avg="vertical",spread.estimate="stddev",col="black",lty=3, lwd=3)
dev.off()
Run Code Online (Sandbox Code Playgroud)
但是当我应用这个代码时,图像变得非常糟糕,它不能缩放(适合)所需的大小.我错过了什么?如何将图像"拟合"到情节中?
,
我在R工作室的R工作.我需要计算数据帧每列的平均值.
cluster1 // 5 by 4 data frame
mean(cluster1) //
Run Code Online (Sandbox Code Playgroud)
我有 :
Warning message:
In mean.default(cluster1) :
argument is not numeric or logical: returning NA
Run Code Online (Sandbox Code Playgroud)
但我可以使用
mean(cluster1[[1]])
Run Code Online (Sandbox Code Playgroud)
得到第一列的平均值.
如何获得所有列的方法?
任何帮助,将不胜感激.
关于在SO列表中合并data.frame的大多数问题与我试图在这里得到的内容并不完全相关,但可以随意证明我的错误.
我有一个data.frames列表.我想逐行"rbind"行到另一个data.frame.实质上,所有第一行形成一个data.frame,第二行形成第二个data.frame等等.结果将是与原始data.frame中的行数相同的长度列表.到目前为止,data.frames的尺寸相同.
这里有一些数据可供使用.
sample.list <- list(data.frame(x = sample(1:100, 10), y = sample(1:100, 10), capt = sample(0:1, 10, replace = TRUE)),
data.frame(x = sample(1:100, 10), y = sample(1:100, 10), capt = sample(0:1, 10, replace = TRUE)),
data.frame(x = sample(1:100, 10), y = sample(1:100, 10), capt = sample(0:1, 10, replace = TRUE)),
data.frame(x = sample(1:100, 10), y = sample(1:100, 10), capt = sample(0:1, 10, replace = TRUE)),
data.frame(x = sample(1:100, 10), y = sample(1:100, 10), capt = sample(0:1, 10, replace = TRUE)), …Run Code Online (Sandbox Code Playgroud) 将缺失值传递给ggplot时,它非常友好并警告我们它们存在.这在交互式会话中是可以接受的,但是在编写报表时,输出不会出现警告,特别是如果有很多警告.下面的示例缺少一个标签,产生警告.
library(ggplot2)
library(reshape2)
mydf <- data.frame(
species = sample(c("A", "B"), 100, replace = TRUE),
lvl = factor(sample(1:3, 100, replace = TRUE))
)
labs <- melt(with(mydf, table(species, lvl)))
names(labs) <- c("species", "lvl", "value")
labs[3, "value"] <- NA
ggplot(mydf, aes(x = species)) +
stat_bin() +
geom_text(data = labs, aes(x = species, y = value, label = value, vjust = -0.5)) +
facet_wrap(~ lvl)
Run Code Online (Sandbox Code Playgroud)

如果我们suppressWarnings绕过最后一个表达式,我们会得到有多少警告的摘要.为了论证,让我们说这是不可接受的(但确实非常诚实和正确).打印ggplot2对象时如何(完全)抑制警告?
在R中,是否有比下面找到字符串中最后一个点的位置更好/更简单的方法?
x <- "hello.world.123.456"
g <- gregexpr(".", x, fixed=TRUE)
loc <- g[[1]]
loc[length(loc)] # returns 16
Run Code Online (Sandbox Code Playgroud)
这会找到字符串中的所有点,然后返回最后一个点,但它看起来相当笨拙.我尝试使用正则表达式,但没有走得太远.
我在Ubuntu 12.10上使用R版本2.15.3(2013-03-01).系统是德语,因此是R.在搜索错误消息时,这是不方便的.
以这种方式在xterm中执行R $ LANG="C" R部分地解决了这个问题.然后R用英语显示所有内容.但是当以这种方式加载RStudio时,R解释器仍然是德语.所以我正在寻找一种方法来改变R本身的R语言环境.
我发现了这个:如何更改R中的语言设置,但Sys.setenv(LANG = "en")对我不起作用:
2+x
# Fehler: Objekt 'x' nicht gefunden
Sys.setenv(LANG = "en")
2+x
# Fehler: Objekt 'x' nicht gefunden
Run Code Online (Sandbox Code Playgroud)
我也尝试Sys.setenv(LANG = "en_US.UTF-8")过没有成功.
输出 Sys.getlocale()
Sys.getlocale()
# [1] "LC_CTYPE=de_DE.UTF-8;LC_NUMERIC=C;LC_TIME=de_DE.UTF-8;
# LC_COLLATE=de_DE.UTF-8;LC_MONETARY=de_DE.UTF-8;LC_MESSAGES=de_DE.UTF-8;
# LC_PAPER=C;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=de_DE.UTF-8;
# LC_IDENTIFICATION=C"
Run Code Online (Sandbox Code Playgroud)
(为方便起见添加了行制动器)
我试图通过将变量传递到模型中来预测R使用predict()函数的值.
我收到以下错误:
Error in eval(predvars, data, env) :
numeric 'envir' arg not of length one
Run Code Online (Sandbox Code Playgroud)
这是我的data frame名字df:
df <- read.table(text = '
Quarter Coupon Total
1 "Dec 06" 25027.072 132450574
2 "Dec 07" 76386.820 194154767
3 "Dec 08" 79622.147 221571135
4 "Dec 09" 74114.416 205880072
5 "Dec 10" 70993.058 188666980
6 "Jun 06" 12048.162 139137919
7 "Jun 07" 46889.369 165276325
8 "Jun 08" 84732.537 207074374
9 "Jun 09" 83240.084 221945162
10 "Jun 10" 81970.143 …Run Code Online (Sandbox Code Playgroud)