Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
学习R:如何输出某些y向量元素的元素,其索引对应于某些x向量?_R_Vector - Fatal编程技术网

学习R:如何输出某些y向量元素的元素,其索引对应于某些x向量?

学习R:如何输出某些y向量元素的元素,其索引对应于某些x向量?,r,vector,R,Vector,所以我有两个载体,剂量和性别。剂量是一个长度为100的数字向量,性别是一个长度为100的“女性”和“男性”值向量。如果我定义了什么是高剂量值(即高剂量为40、50、60等),并且我只想要女性患者,我将如何输出类似以下样本输出的内容 样本输出 [1] “女性高剂量患者1的剂量为63” [1] “女性高剂量患者2的剂量为70” [1] “女性高剂量患者3的剂量为63.07” [1] “女性高剂量患者4的剂量为58” [1] “女性高剂量患者5的剂量为75.25”因此,首先让我为性别和剂量创建一些虚拟

所以我有两个载体,剂量和性别。剂量是一个长度为100的数字向量,性别是一个长度为100的“女性”和“男性”值向量。如果我定义了什么是高剂量值(即高剂量为40、50、60等),并且我只想要女性患者,我将如何输出类似以下样本输出的内容

样本输出 [1] “女性高剂量患者1的剂量为63”

[1] “女性高剂量患者2的剂量为70”

[1] “女性高剂量患者3的剂量为63.07”

[1] “女性高剂量患者4的剂量为58”


[1] “女性高剂量患者5的剂量为75.25”

因此,首先让我为
性别和
剂量创建一些虚拟数据作为向量:

Gender <- sample(c("Male", "Female"), 100, replace = TRUE)
Dose <- round(runif(100, min = 30, max = 70),2)
创建一个
数据框
: 让我们来分析一下。首先,
mutate
将向我们的
df
添加新列。我们将从
Level
开始,使用
ifelse
说明
Dose
是否大于或等于我们定义的
高剂量

接下来,我将
Patient
任意指定为行号。如果患者编号很重要,您可能需要更改此选项

最后,
Output
将这些列粘贴在一起,引号中的任何内容逐行都是相同的。如果您只对输出感兴趣,只需通过
df$output

数据表
方法:
我可以使用data.table实现与使用dplyr相同的输出吗?我正在尝试在不使用其他包的情况下创建此代码。
high_dose <- 50
df <- data.frame(Dose = Dose,
                 Gender = Gender)
# if you haven't already done so, you'll want to install.packages("dplyr")
library(dplyr)
df %>% 
  mutate(Level = ifelse(Dose >= high_dose, "High", "Low"),
         Patient = row_number(),
         Output = paste(Gender, Level, "Dose Patient", Patient, "has dose", Dose))
library(data.table)
df <- data.table(Dose = Dose,
                 Gender = Gender)

df[, Level := ifelse(Dose >= high_dose, "High", "Low")]
df[, Patient := 1:100]
df[, Output := paste(Gender, Level, "Dose Patient", Patient, "has dose", Dose)]

df$Output
paste(Gender, ifelse(Dose >= high_dose, "High", "Low"), 
      "Dose Patient", 1:100, "has dose", Dose)