我正在尝试使用查找表中的匹配重命名数据框中的列.
oldvars = c("mpg", "cyl" , "disp", "hp", "drat", "wt", "qsec", "vs", "am", "gear", "carb")
newvars = c("Miles Per Gallon", "Cycle", "Displacement", "Horsepower", "Distance Rating",
"Working Time", "Quick Second", "Versus", "America", "Gears", "Carbohydrates")
lookup = data.frame(oldvars, newvars)
mycars = mtcars
Run Code Online (Sandbox Code Playgroud)
使用查找列表匹配oldvars并将其更改为newvars,以便names(mycars)输出"Miles Per Gallon", "Cycle", "Displacement", "Horsepower", "Distance Rating", "Working Time", "Quick Second", "Versus", "America", "Gears", "Carbohydrates"
我已经尝试过colnames更改名称,但它并没有像我期望的那样读取变量.下列
for(i in 1:length(newvars)) {
colnames(mycars)[oldvars[i]] = newvars[i]
}
Run Code Online (Sandbox Code Playgroud)
只输出NAs
我有像MovieLense 1M数据文件一样的简单数据
item_id title genres
1 1 Toy Story (1995) Animation|Children's|Comedy
2 2 Jumanji (1995) Adventure|Children's|Fantasy
3 3 Grumpier Old Men (1995) Comedy|Romance
4 4 Waiting to Exhale (1995) Comedy|Drama
5 5 Father of the Bride Part II (1995) Comedy
6 6 Heat (1995) Action|Crime|Thriller
Run Code Online (Sandbox Code Playgroud)
我的genres列数据包含19个值.我应该如何更改我的数据以显示如上样本?
genreTbl['title']
title
1 unknown
2 Action
3 Adventure
4 Animation
5 Children's
6 Comedy
7 Crime
8 Documentary
9 Drama
10 Fantasy
11 Film-Noir
12 Horror
13 Musical
14 Mystery
15 …Run Code Online (Sandbox Code Playgroud) 例如,我对尖齿中的以下语法感到非常困惑,
n.iter=100,000
thin=100
n.adapt=100
update(model,1000,progress.bar = "none")
Run Code Online (Sandbox Code Playgroud)
目前我认为
n.adapt=100 表示您将前100个抽奖设置为预烧,
n.iter=100,000 表示MCMC链有100,000次迭代,其中包括老化,
我已经很多时间核对了这个问题的解释,但仍不知道我的解释是否n.iter和n.adapt正确,以及如何理解update()和理解thinning。
有人可以向我解释吗?
我想使用dplyr逐行遍历数据帧,如果A == 0,则设置B为B上一行的值,否则保持不变.但是,我希望" B在前一行中的值"在计算过程中引用前一行,而不是在计算开始之前,因为值可能已经改变 - 换句话说,我希望更改向下传播.例如,使用以下数据:
dat <- data.frame(A=c(1,0,0,0,1),B=c(0,1,1,1,1))
A B
1 0
0 1
0 1
0 1
1 1
Run Code Online (Sandbox Code Playgroud)
我想计算的结果是:
result <- data.frame(A=c(1,0,0,0,1),B=c(0,0,0,0,1))
A B
1 0
0 0
0 0
0 0
1 1
Run Code Online (Sandbox Code Playgroud)
如果我使用类似的东西,result <- dat %>% mutate(B = ifelse(A==0,lag(B),B)则更改不会向下传播:结果$ B将等于c(0,0,1,1,1),而不是c(0,0,0,0,1).
更一般地说,如何使用dplyr :: mutate创建依赖于自身的列(因为它在计算过程中更新,而不是之前的更新)?
我有一个数据框,books我试图遍历所有列并返回类似missing该列是否有任何缺失值的内容。
下面是我的代码。它返回缺少的元素。然后我检查是否TRUE构成了这些元素中的任何一个,表明这是一个缺失的元素。
这有效。
但是,作为 R 的新手,我知道有更好的方法可以做到这一点,但我不知道。
for (col in colnames(books)) {
bool <- is.na(books[[col]])
if (TRUE %in% bool) {
print("Missing")
} else {
print("Fine")
}
}
Run Code Online (Sandbox Code Playgroud) 我想我一定是误解line =了 中的论点theme()。根据 中的文档?theme,line =应该会影响图中的所有线元素。然而,改变颜色没有任何作用,而改变大小却起作用。
library(ggplot2)
ggplot(iris, aes(x = Sepal.Width, Petal.Length)) +
geom_point() +
geom_smooth() +
theme(line = element_line(color = "green", size = 5))
#> `geom_smooth()` using method = 'loess' and formula 'y ~ x'
Run Code Online (Sandbox Code Playgroud)

由reprex 包于 2022 年 8 月 15 日创建(v2.0.1)
我的问题有两个:
为什么更改颜色不会影响图中的任何线条?
为什么更改尺寸不会影响 中的线条元素geom_smooth()?
编辑:请参阅@Gregor Thomas 的答案以获取第 2 部分的答案。
我需要从保存在数字类型中的数字中获取最后两位数字并将其另外保存在变量中,例如:a = 1945它需要最后两位数并将其放在b b = 45中