我尝试运行带虹膜数据集的样本行,给出对象'...'未找到错误.有什么我需要在我的环境中检查具体的吗?
library(plotly)
p <- plot_ly(iris, x = Petal.Length, y = Petal.Width,color = Species, mode = "markers")
Run Code Online (Sandbox Code Playgroud)
plot_ly中的错误(iris,x = Petal.Length,y = Petal.Width,color = Species,:object'Petal.Length'未找到
我正在尝试对分组 ( dplyr::group_by) 的数据进行滚动意味着 - 我无法理解为什么这不起作用的原因:
set.seed(1)
library(dplyr)
library(zoo)
df <- data.frame(a=sample(LETTERS[1:2], replace= T, 10),
b=rnorm(20), stringsAsFactors = F)
df %>%
group_by(a) %>%
mutate(rollapply(b, 3, mean))
Run Code Online (Sandbox Code Playgroud)
我可以看到这里可以找到一个冗长的解决方案,但想知道为什么上面的方法不起作用
我有两个大小相同的数据集 [132,450000]。一个具有值,另一个具有对应于这些值的 p 值。现在我想合并这两个数据集,以便我有 1 个大数据框 [264,450000],其中包含带有值的列,后跟带有相应 p 值的列。行名完全相同,列名类似于:df1 中的 sample1 和 df2 中的 sample1_pval
例如我有两个像这样的数据框
> df1
x y
cg1 1 a
cg2 2 b
cg3 3 c
cg4 4 d
cg5 5 e
> df2
x_pval y_pval
cg1 6 f
cg2 7 g
cg3 8 h
cg4 9 i
cg5 10 j
Run Code Online (Sandbox Code Playgroud)
我想用这个顺序合并它们:df1 的第一列,然后是 df2 的第一列,然后是 df1 的第二列,然后是 df2 的第二列等等......
那么它看起来像这样:
> df
x x_pval y y_pval
cg1 1 6 a f
cg2 2 7 b g
cg3 …Run Code Online (Sandbox Code Playgroud) 这是我的示例文本:
text = "First sentence. This is a second sentence. I like pets e.g. cats or birds."
Run Code Online (Sandbox Code Playgroud)
我有一个按句子分割文本的功能
library(stringi)
split_by_sentence <- function (text) {
# split based on periods, exclams or question marks
result <- unlist(strsplit(text, "\\.\\s|\\?|!") )
result <- stri_trim_both(result)
result <- result [nchar (result) > 0]
if (length (result) == 0)
result <- ""
return (result)
}
Run Code Online (Sandbox Code Playgroud)
它实际上是按标点符号分隔的。这是输出:
> split_by_sentence(text)
[1] "First sentence" "This is a second sentence" "I like pets e.g" "cats or birds."
Run Code Online (Sandbox Code Playgroud)
是否有可能排除“eg”等特殊模式?
在 R 中,我想从嵌套列表中提取第一项;但有时该列表可能为空。
例如:
myList <- list(
list(ID = 1, Sales = 1000, Product = "Car"),
list(ID = 2, Sales = 2000, Product = "Boat"),
list(ID = 3, Sales = 1500, Product = "Bike")
)
myList2 <- list()
Run Code Online (Sandbox Code Playgroud)
所以当我拨打以下电话时:
myList[[1]]
myList2[[1]]
Run Code Online (Sandbox Code Playgroud)
第一个调用返回一个有效的子列表(ID=1, Sales=1000, Product = "Car"),但第二个调用返回一个错误 -
Error in myList2[[1]] : subscript out of bounds
是否有一个简单的调用可以表示“填充列表时返回项目 1,否则返回NULL并且不抛出错误”?
我对 R 有点陌生,想通过该列的名称从矩阵中删除一列。我知道这X[,2]给出了第二列,并X[,-2] 给出了除第二列之外的每一列。我真正想知道的是是否有使用列名的类似命令。我有一个矩阵并想删除“销售”列,但X[,-"sales"]似乎不适用于此。我该怎么做?我只会使用列号,我希望以后能够将它用于其他具有不同维度的矩阵。任何帮助将非常感激。
在有人将此问题标记为重复之前,我已经看到过这个问题了,它不能解决我的问题。如果我尝试
mtcars %>% mutate(new = rowMeans(select(.,c(1,7)), na.rm = TRUE))
Run Code Online (Sandbox Code Playgroud)
它很好地工作,但是如果我用pmax而不是这样做rowMeans:
mtcars %>% mutate(new = pmax(select(.,c(1,7)), na.rm = TRUE))
Run Code Online (Sandbox Code Playgroud)
我懂了
Error: Column `new` is of unsupported class data.frame
Run Code Online (Sandbox Code Playgroud)
为什么?在这个例子中,我可以得到输出
mtcars %>% mutate(new = pmax(mpg,qsec,carb,na.rm = TRUE))
Run Code Online (Sandbox Code Playgroud)
但是我尝试使用它,select因为我需要一些真实的数据select helper或由列位置确定的变量(例如1,7在示例中),否则我也会出错。
如链接问题的答案中所建议,我也尝试使用do.call获取错误。
谢谢!
我大约有7500个沉降值。每个沉降值(V9)对应一个测站(V2)和一个年份(V3)。我想为每个站设置一条最合适的线(V9〜V3)。
我使用lm创建了一个函数,该函数在手动子集数据时可以正常工作。但是,当我尝试使用聚合在每个工作站上运行线性模型时,每个工作站都会获得相同的值。
这是一些数据的示例:
V2 V3 V9
CRMS0002 2008 -28.4990000
CRMS0002 2009 -28.8080808
CRMS0002 2012 -31.9871795
CRMS0006 2008 -56.8998413
CRMS0006 2013 40.8611111
CRMS0006 2015 32.8555555
CRMS0033 2007 -16.8044444
Run Code Online (Sandbox Code Playgroud)
这是代码:
sub_rate = function(x) {lm(CRMSsub$V9~CRMSsub$V3)}
agg <- aggregate(CRMSsub$V9, by = list(CRMSsub$V2), FUN = sub_rate)
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
agg <- lapply(split(CRMSsub, CRMSsub$V3), FUN = sub_rate)
Run Code Online (Sandbox Code Playgroud)
根据第一和第二代码的一部分进行汇总。因此,我得到了354个按工位组织的元素,但是每个工位的线性模型结果(分别给出截距和斜率)相同,这意味着它无法按工位执行功能。这是结果的示例:
Group.1 x
CRMS0002 c(`(Intercept)` = -2333.06378840009, `CRMSsub$V3` = 1.1541441797906)
CRMS0006 c(`(Intercept)` = -2333.06378840009, `CRMSsub$V3` = 1.1541441797906)
CRMS0033 c(`(Intercept)` = -2333.06378840009, `CRMSsub$V3` = 1.1541441797906)
Run Code Online (Sandbox Code Playgroud) 我想将来自不同国家/地区的价格调整到一个时区,这意味着将一列向上移动在另一列中声明的滞后时间(移动是时差)。
使用这样的示例数据:
example=data.frame(country=c("IT","IT","GR","GR","GR","TR","TR","TR","TR"),
price=c(200,150,300,480,590,638,237,438,555),
shift=c(0,0,1,1,1,2,2,2,2))
Run Code Online (Sandbox Code Playgroud)
看起来像这样:
country price shift
IT 200 0
IT 150 0
GR 300 1
GR 480 1
GR 590 1
TR 638 2
TR 237 2
TR 438 2
TR 555 2
Run Code Online (Sandbox Code Playgroud)
我想得到以下结果:
country price shift
IT 200 0
IT 150 0
GR 480 1
GR 590 1
GR NA 1
TR 438 2
TR 555 2
TR NA 2
TR NA 2
Run Code Online (Sandbox Code Playgroud)
我试图从此线程使用一种解决方案: R:在数据帧UP的单列中移动值, 但由于它使用一个滞后值,因此并不完全适用。
我有这个df:
FRAME TRACK_ID SUM TC_17
1 15 0 1
2 15 0 1
3 15 0 1
4 15 0 -1
5 15 0 1
6 15 0 1
7 15 0 -1
8 15 0 -1
9 15 0 1
10 15 0 1
Run Code Online (Sandbox Code Playgroud)
现在,我正在使用此代码来获取TC_17具有值的帧1:
for (i in 1:length(IDs)) {
temp <- get(paste("TRACK_", IDs[i], sep = ""))
temp3 <- paste("TRACK_", IDs[i], sep = "")
if (ncol(temp)==3) {
print(paste("No contacts detected for Track", IDs[i]))
next
} …Run Code Online (Sandbox Code Playgroud)